Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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;





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

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

Наверх





Память: 0.46 MB
Время: 0.005 c
1-90838
lipskiy
2002-03-16 01:23
2002.03.28
TThread


1-90954
ДмитрийВ
2002-03-14 18:28
2002.03.28
Как передать двухмерный массив в процедуру?


1-90839
snoup
2002-03-16 01:00
2002.03.28
Как написать СКАНЕР ПОРТОВ!


1-90885
Timon
2002-03-15 11:42
2002.03.28
Интерестненькая задача


3-90810
ruslan_as
2002-03-04 13:13
2002.03.28
Сумма по полю





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский