Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.11.07;
Скачать: CL | DM;

Вниз

Как создать несколько экземпляров немодальных форм?   Найти похожие ветки 

 
Z-Yuri ©   (2002-10-28 17:55) [0]

Есть форма для просмотра таблиц БД. Так, как в базе данных много похожих таблиц (справочников) то просматриваются они одной фоpмой через процедуру:

Procedure ShowTable(Dataset: TDataset, ACaption:String);
Begin
if not assigned(form1) then form1:=TForm1.Create(Application);
with form1 do
begin
if Caption<>ACaption then // Если нужная форма создана то только покажем
begin
Datasource1.Dataset:=Dataset;
Datasource1.Dataset.Open;
end;
Show;
end;
End;

Все работало отлично, пока не понадобилось отобразить одновременно два (три...) справочника. Писать процедуру на каждый справочник и обьявить соотв. кол-во переменных класса ТForm1? Мне это не очень нравится.
Как правильно это сделать?


 
Anatoly Podgoretsky ©   (2002-10-28 18:01) [1]

Переменные совсем не нужны, запускай по Show, уничтожай в OnClose


 
Андрей Прокофьев ©   (2002-10-28 18:04) [2]

Что-то в этом роде
Procedure ShowTable(Dataset: TDataset, ACaption:String);
var
xF : TForm1;
i : Integer;
Begin
for i := 0 to Screen.FormCount - 1 do
if Screen.Forms[i].Caption = ACaption then
begin
Screen.Forms[i].Show;
Exit;
end;
xF := TForm1.Create(Application);
xF.Caption := ACaption;
xF.Datasource1.Dataset:=Dataset;
xF.Datasource1.Dataset.Open;
xF.Show;
end;




 
Z-Yuri ©   (2002-10-28 18:24) [3]

>Андрей Прокофьев ©. Спасибо, я не додумался до перебора форм.
А что мне тогда делать с
form1:=nil в обработчике OnDestory.
Или оставить только Action:=cafree в onclose?


 
Андрей Прокофьев ©   (2002-10-28 18:31) [4]

оставить только Action:=cafree в onclose;

А переменная Form1 Вам вообще не нужна,
уберите ее из объявлений Unit (var Form1 : TForm);
и все ссылки на нее тоже. и из списка автозагружаемых форм.
(Надеюсь, Form1 - не главная форма :) )



 
Z-Yuri ©   (2002-10-28 19:02) [5]

Спасибо, попробую!



Страницы: 1 вся ветка

Текущий архив: 2002.11.07;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.015 c
1-21677
Амангос
2002-10-27 13:15
2002.11.07
Как можно уменьшить размер ехе файла без помощи пакетов?


1-21607
Alexseyy
2002-10-26 10:57
2002.11.07
Minimize


3-21457
Fishka
2002-10-18 09:47
2002.11.07
Table.Fields


14-21766
acorus
2002-10-16 17:59
2002.11.07
Indent/Unindent по Tab/Shift-Tab


1-21468
Дмитрий К.К.
2002-10-26 10:07
2002.11.07
Получить TTreeNode