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

Вниз

Вопрос, как добиться уникальности MDI окна?   Найти похожие ветки 

 
dimonf   (2002-03-13 13:41) [0]

У меня имеется MDI приложение. В главном (MainForm) окне я произвожу операцию и визуально эту операцию показываю в MDI окне с помощью Gauge. В MDI окне у меня находиться и StringGrid куда я вывожу результаты операции.
При последующем вызове операции на выполнение у меня выводится следующие окно MDI. Проблема в том, что при выполнении операции в MDI2 я нажимаю на MDI1 и у меня
В MDI1 начинает увеличиваться Gauge и заполняется StringGrid первого MDI окна.
В чем проблема, как мне сделать MDI окна уникальными, что бы при выводе последующего MDI окна предыдущее окно не обновлялось?
Заранее спасибо !!!


 
Mbo ©   (2002-03-13 14:49) [1]

>MDI окне у меня находиться и StringGrid куда я вывожу >езультаты операции
общие слова. как ты это делаешь?


 
Fellomena   (2002-03-13 15:06) [2]

Посмотри ветку: http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1015920067&n=0
Может найдёшь чего-нибудь полезного. 8)


 
dimonf   (2002-03-13 15:33) [3]

Вот:
MainForm:

{Процедура вывода MDI окна}
procedure TMainForm.CreateMDIChild(const Name: string; Idx:Integer);
var
Child: TMDIForm;
begin
Child:=TMDIForm.CreateMDI(Self, Idx);
Child.Caption := Name;
end;

{Процедура начала операции }
ButtonClick …

Begin
Gauge1.MaxValue:=100
Gauge1. Progress:=0;
CreateMDIChild("Задача",1);
For I:=1 to 100 do
with Application.MainForm.ActiveMDIChild as TMDIForm do
begin
Gauge1. Progress:=I;
StringGrid1. Cells[0,I]:=’Задача’;
end;
End;


MDIForm:

{Критим MDI форму}
constructor TMDIForm.CreateMDI(AOwner: TComponent; Idx: Integer);
begin
FIdx := Idx;
Create (AOwner);
end;


Весь пример я не стал описывать. А костяк примерно такой.


 
MBo ©   (2002-03-13 15:39) [4]

CreateMDIChild("Задача",1);делай c разными IDx,
и выводи не в ActiveMDIChild, а в тот, у которого IDx нужный.
в ссылке Fellomenы есть подходы.


 
Fellomena   (2002-03-13 15:43) [5]

Тут, как мне кажется, лучше всего:

Alx2 © (12.03.02 11:09)

С ходу придумалось пока это:
заводим сортированный TStringList в главной форме, где храним имена форм и, в TStringList.Objects,
линки на эти формы. А потом через indexOf (в отсортированном Liste он ищет быстрым бинарным
поиском) ищем нужную форму с нужным именем и рисуем на ней.


Подход понятен ?
Проводи диспечерезацию, используя TList (или его потомки).


 
dimonf   (2002-03-13 19:53) [6]

Что то, народ у меня ничего не выходит. :(((
Может еще, кто поделится своими знаниями по данному вопросу?


 
Набережных С.   (2002-03-13 20:37) [7]

Сделай в своем ButtonClick так:

var
Target:TMDIForm;
begin
Target:=Application.MainForm.ActiveMDIChild as TMDIForm;
....
....
For I:=1 to 100 do
with Target do
....


 
Набережных С.   (2002-03-13 20:40) [8]

Точнее так:

CreateMDIChild("Задача",1);
Target:=Application.MainForm.ActiveMDIChild as TMDIForm;


 
Владислав ©   (2002-03-14 08:17) [9]

Вот один из вариантов:

function TMainForm.CreateMDIChild(const Name: string; Idx:Integer): TMDIForm;
begin
Result:=TMDIForm.CreateMDI(Self, Idx);
Result.Caption := Name
end;


...


{Процедура начала операции }
ButtonClick
...
var
Child: TMDIForm;
begin
Gauge1.MaxValue:=100
Gauge1.Progress:=0;
with CreateMDIChild("Задача",1) do
for I:=1 to 100 do
begin
Gauge1.Progress:=I;
StringGrid1.Cells[0,I]:=’Задача’;
end;
end;





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

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

Наверх




Память: 0.49 MB
Время: 0.009 c
3-90788
Oleg_Em
2002-03-04 06:31
2002.03.28
Кто-нибудь работал с PostgreSQL ?


3-90790
ev
2002-02-22 21:05
2002.03.28
IB или MS SQL Server


3-90802
Дима С.
2002-02-28 11:14
2002.03.28
Oracle Call Interface (OCI)


1-90958
Alibaba
2002-03-14 17:47
2002.03.28
Delphi-Excel


6-91009
KHunter
2002-01-11 08:59
2002.03.28
тонкий клиент