Вопрос № 117496: Уважаемые эксперты пожалуйста помогите написать мне программу блокнот, используя компонент richedit. Заранее благодарен....Вопрос № 117497: Уважаемые эксперты у меня вопрос. Почему richedit не работает с savedialog? Заранее благодарю...Вопрос № 117588: Здравствуйте уважаемые эксперты. У меня вопрос в следующем.
Создана программа. При запуске ее под Win98 выдается следующее сообщение: (под winXP все нормально)
Файл fff.exe связан с отсутствующим компонентом NTDLL.DLL:NTOpenSelection. и прог...
Вопрос № 117.496
Уважаемые эксперты пожалуйста помогите написать мне программу блокнот, используя компонент richedit. Заранее благодарен.
Отвечает: Drbear
Здравствуйте, Alexander Alexandrovic!
Этот пример Вас спасет?
В проекте 2 формы: Form1 - основная, Form2 - о программе
на Form1: MainMenu, SaveDialog, OpenDialog, ColorDialog, FontDialog, FindDialog, ComboBox, RichEdit.
Остальное в приложении
Приложение:
Ответ отправил: Drbear (статус: 5-ый класс)
Ответ отправлен: 08.01.2008, 18:16 Оценка за ответ: 5 Комментарий оценки: Спасибо
Отвечает: Genia007
Здравствуйте, Alexander Alexandrovic! Вот исходник на основе richedit, разбирайтесь.
unit Unit1;
function EnumFontsProc(var LogFont: TLogFont; var TextMetric: TTextMetric;
FontType: Integer; Data: Pointer): Integer; stdcall;
begin
TStrings(Data).Add(LogFont.lfFaceName);
Result := 1;
end;
procedure TMain.GetFontNames;
var
DC: HDC;
begin
DC := GetDC(0);
EnumFonts(DC, nil, @EnumFontsProc, Pointer(ComboBox1.Items));
ReleaseDC(0, DC);
ComboBox1.Sorted := True;
end;
function TMain.CurrText: TTextAttributes;
begin
if RichEdit1.SelLength > 0 then Result := RichEdit1.SelAttributes
else Result := RichEdit1.DefAttributes;
end;
procedure SetFileName(const FileName: String);
var FFileName: string;
begin
FFileName := FileName;
Main.Caption := Format('%s - %s', [ExtractFileName(FileName), Application.Title]);
end;
procedure TMain.FileOpen1OpenDialogCanClose(Sender: TObject;
var CanClose: Boolean);
begin
RichEdit1.Lines.LoadFromFile(FileOpen1.Dialog.FileName);
SetFileName(FileOpen1.Dialog.FileName);
end;
procedure TMain.FileSaveAs1SaveDialogCanClose(Sender: TObject;
var CanClose: Boolean);
begin
RichEdit1.Lines.SaveToFile(FileSaveAs1.Dialog.FileName+'.rtf');
end;
procedure TMain.FontEdit1Accept(Sender: TObject);
begin
RichEdit1.Font:=FontEdit1.Dialog.Font;
end;
procedure TMain.PrintdocExecute(Sender: TObject);
begin
RichEdit1.Print('');
end;
procedure TMain.NewdocExecute(Sender: TObject);
begin
RichEdit1.Lines.Clear;
SetFileName(sUntitled);
end;
procedure TMain.ComboBox1Change(Sender: TObject);
begin
if FUpdating then Exit;
CurrText.Name := ComboBox1.Items[Combobox1.ItemIndex];
end;
procedure TMain.Edit1Change(Sender: TObject);
begin
if FUpdating then Exit;
CurrText.Size := StrToInt(Edit1.Text);
end;
procedure TMain.ShowHint(Sender: TObject);
begin
if Length(Application.Hint) > 0 then
begin
StatusBar1.SimplePanel := True;
StatusBar1.SimpleText := Application.Hint;
end
else StatusBar1.SimplePanel := False;
end;
procedure TMain.RichEditChange(Sender: TObject);
begin
SetModified(RichEdit1.Modified);
end;
procedure TMain.SetModified(Value: Boolean);
begin
if Value then StatusBar1.Panels[1].Text := sModified
else StatusBar1.Panels[1].Text := '';
end;
procedure TMain.RichEdit1SelectionChange(Sender: TObject);
begin
UpdateCursorPos;
end;
procedure TMain.ColfontExecute(Sender: TObject);
begin
If not ColorDialog1.Execute then exit
else begin
if FUpdating then Exit;
CurrText.Color:=ColorDialog1.Color;
end;
end;
procedure TMain.SearchFind1FindDialogClose(Sender: TObject);
begin
Richedit1.SetFocus;
end;
procedure TMain.AboutExecute(Sender: TObject);
begin
Application.CreateForm(TAboutBox, AboutBox);
end;
end.
Ответ отправил: Genia007 (статус: 3-ий класс)
Ответ отправлен: 08.01.2008, 20:55 Оценка за ответ: 5 Комментарий оценки: Большое спасибо за помощь! Вы мне очень омогли.
Отвечает: Louken
Здравствуйте, Alexander Alexandrovic!
Люди, что Вы мучаетесь, у Вас эта программа давно уже есть.
Зайдите в каталог, где установлена Delphi, там найдите каталог Demos, а там RichEdit. Вот оно, это почти WordPad.
Удачи Вам.
Приложение:
Ответ отправил: Louken (статус: Студент)
Ответ отправлен: 08.01.2008, 23:45 Оценка за ответ: 5 Комментарий оценки: Дело в том, что у меня Delphi 2006, но всё равно за совет спасибо
Вопрос № 117.497
Уважаемые эксперты у меня вопрос. Почему richedit не работает с savedialog? Заранее благодарю
Отвечает: Raptor3
Здравствуйте, Alexander Alexandrovic!
Крайне странный вопрос - а как по вашему ричедит должен работать с savedialog???
SaveDialog - это просто вызываемый диалог для выбора папки сохранения или файла
Приложение:
--------- Программист - это человек который решает проблему, о которой вы не знаете, способом который вы не понимаете
Ответ отправил: Raptor3 (статус: 4-ый класс)
Ответ отправлен: 08.01.2008, 16:33 Оценка за ответ: 5 Комментарий оценки: Большое спасибо
Отвечает: Genia007
Здравствуйте, Alexander Alexandrovic! Должен работать попробуйте следующий код:
procedure TMain.SaveDialogCanClose(Sender: TObject;
var CanClose: Boolean);
begin
RichEdit1.Lines.SaveToFile(SaveDialog1.Dialog.FileName+'.rtf');
end;
Ответ отправил: Genia007 (статус: 3-ий класс)
Ответ отправлен: 08.01.2008, 21:01 Оценка за ответ: 5 Комментарий оценки: Спасибо
Вопрос № 117.588
Здравствуйте уважаемые эксперты. У меня вопрос в следующем.
Создана программа. При запуске ее под Win98 выдается следующее сообщение: (под winXP все нормально)
Файл fff.exe связан с отсутствующим компонентом NTDLL.DLL:NTOpenSelection. и программа не запускается - что можно сделать чтоб подцепить эту DLL (анализировать версию windows - не предлагать, т.к. призапуске ее под другой версией Win95 - выдается сообщение об отсутствии user32.dll:EnumDisplayDivices )
Отвечает: Виктор Пырлик
Здравствуйте, Кильевич Наталья Ульяновна!
Всё очень просто, в программе используются функции зависимые от платформы.
Даже, если вызов идет из библиотеки, которая есть в обоих ОС (9х и NT) то, в 9х урезано может быть до безобразия (стоят просто заглушки).
Следовательно - если это ваша программа, избегайте функций работающих только под NT – всегда можно решить задачу множеством способов. Если это стороння - то, тут ничего не поделаешь, т.к. эти библиотеки системные и вы не можете их "прикрутить" - зависят в конечно счете от ядра.
--------- Если ничего не помогло - надо читать инструкцию
Ответ отправил: Виктор Пырлик (статус: Специалист)
Ответ отправлен: 09.01.2008, 10:50 Оценка за ответ: 5 Комментарий оценки: Спасибо за быстрый ответ.Жаль что нельзя каким то обазом подцепить DLL - т.к. искать решение для другой версии Win - довольно хлопотно. И что самое интересное - даже найдя это решение а вставив в программу проверку на версию Win - обходя решение для WinXP - все равно выдается это сообщение.
Зависимые библитеки можно таскать вместе с приложением и хранить их в одном каталоге с exe-файлом. Или включить их в проект "Projekt --> Add to projekt".
Но лучше искать обходные пути, и по минимуму использовать библиотеки, зависимые от версии ОС.
Ответ отправил: Drbear (статус: 5-ый класс)
Ответ отправлен: 09.01.2008, 12:23 Оценка за ответ: 4 Комментарий оценки: Спасибо за ответ, но помещение этой системной dll (ее версии в WinXP) в каталог программы ничего не дало-т.к система берет в свою "родную" dll - а эта родная dll (c этим именем уже загружена в память) - лб этом говорит тот факт - если попробовать зарегистрировать в системе "новую" DLL
Отвечает: Зиновьев Дмитрий Владимирович
Здравствуйте, Кильевич Наталья Ульяновна!
Не знаю, устроит ли Вас данный вариант, но попробую предложить:
В папку с программой ложите необходимые dll. Так как программа будет сначала искать dll в папке запуска, то она сама и подцепится.
Ответ отправил: Зиновьев Дмитрий Владимирович (статус: 9-ый класс)
Ответ отправлен: 09.01.2008, 13:51 Оценка за ответ: 4 Комментарий оценки: Спасибо за ответ, но помещение этой системной dll (ее версии в WinXP) в каталог программы ничего не дало-т.к система берет в свою "родную" dll - а эта родная dll (c этим именем уже загружена в память) - лб этом говорит тот факт - если попробовать зарегистрировать в системе "новую" DLL