![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
однооконный многофайловый редактор [D5, WinME]
Грифон © (2002-05-12 22:44:00)Скажите, есть ли у кого-нибудь такая компонента? Очень надо.
Грифон (2002-05-13 23:49:00) [1]да, это всё так. Но вы по-моему немного меня не поняли. Я пытаюсь написать свою компоненту. Наследую от Memo, добавляю TTabControl и TMainMenu в перегруженном конструкторе. Так вот меню не показывается.
Song (2002-05-13 23:18:00) [2]А в чём проблема? TMainMenu кидаете на форму.
Делаете Open и Save
Для Open:
With OpenDialog1 Do IF Execute then
Begin
Memo1.Lines.LoadFromFile(FileName);
With TabControl1 Do Tabs[TabIndex]:=FileName;
End;
Для Save:
With TabControl1 Do Memo1.Lines.SaveToFile(Tabs[TabInde]);
Ну вообщем это не сложно. Какие проблемы?
Грифон (2002-05-13 23:10:00) [3]Хорошая идея. Спасибо огромное.
Но вопрос остается, ведь нужно же сделать меню для загрузки и сохранения.
Song (2002-05-13 22:09:00) [4]А что TTabControl+TMemo не использовать?
Грифон (2002-05-13 22:06:00) [5]Спасибо. Так вроде всё работает. А вот компоненту сделать не получается: пытаюсь создать меню и в нем пункты "load" и "save" но при перетаскивании моей компоненты на форму меню не появляется.
делаю так:
Menu : TMainMenu;
LoadItem,SaveItem:TMenuItem;
перегружаю конструктор и пишу:
Menu := TMainMenu.Create(self);
LoadItem := TMenuItem.Create(Self);
SaveItem := TMenuItem.Create(Self);
LoadItem.Caption := "Load";
SaveItem.Caption := "Save";
FMenu.Items.Add(LoadItem);
FMenu.Items.Add(SaveItem);
KilkennyCat (2002-05-13 14:19:00) [6]куда уж подробнее-то?
var
tex : array[1..100] of tmemorystream; //я сделал фиксированный массив, но можно и динамический, просто дольше объяснять, хотя разница только в грамотном созданнии и освобождении элементов массива.
при создании формы:
for i:=1 to 100 do begin
tex[i] := TmemoryStream.Create;
tex[i].size := 0;
end;
при закрытии формы: for i:=1 to 100 do tex[i].Free;
Загрузка файла:
tex[n].size := 0;
tex[n].LoadFromFile(FileName);
сохранение файла:
tex[n].Position := 0;
tex[n].SaveToFile(FileName);
сохранение изменений (например, из TMemo):
procedure TForm.MemoOnChange(Sender:Tobject);
begin
tex[n].size := 0;
memo.SaveToStream(tex[n]);
end;
загрузка в Мемо:
tex[n].Position := 0;
memo.loadFromStream(tex[n]);
Cинтаксис может быть с ошибками, по памяти пишу.
Грифон (2002-05-13 06:22:00) [7]А подскажите тогда поподробнее как его сделать
KilkennyCat (2002-05-13 04:32:00) [8]из любого можно сделать. Создать динамический массив типа потока.
Lesha (2002-05-13 01:16:00) [9]Зачем компонент? :) Есть уже готовый ох...ный EmEditor (www.emurasoft.com)
Трабл только в кряке.