Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.03.28;
Скачать: [xml.tar.bz2];




Вниз

Вопрос, как добиться уникальности 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;





Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.03.28;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.73 MB
Время: 0.018 c
1-90994           Alx2                  2002-03-15 13:44  2002.03.28  
А не накроется что-нибудь, если..


1-90865           BMax                  2002-03-16 07:12  2002.03.28  
Задержка времени


6-91033           Дима566               2002-01-14 19:54  2002.03.28  
Сотовая связь


4-91117           star                  2002-01-28 12:23  2002.03.28  
Кто-нибудь писал ловушки (hooks)? Подскажите ...


3-90805           lightix               2002-03-04 15:36  2002.03.28  
Помогите с БД + Quick REPORT