Текущий архив: 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.46 MB
Время: 0.006 c