Главная страница
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.014 c
1-91004
fag2000@ok.ru
2002-03-15 17:43
2002.03.28
Как глобально выделить память?


1-90861
ZORRO
2002-03-16 21:52
2002.03.28
Как сделать эфект затемнённого стекла на форме? Тоесть фома будет прозразной но и в то же время затенённой.


7-91091
CS
2001-12-19 09:29
2002.03.28
LPT-порт


3-90741
Turalyon
2002-03-01 09:31
2002.03.28
InterBase 6


1-90955
skywalker
2002-03-14 11:36
2002.03.28
Ресурс курсора