Форум: "Начинающим";
Текущий архив: 2006.10.22;
Скачать: [xml.tar.bz2];
Внизтребуется програмно закрыть окно, имя окна хранится в переменной Найти похожие ветки
← →
Officeman (2006-10-02 09:07) [0]//требуется програмно закрыть окно,
//имя окна хранится в переменной p:="Form2";
← →
Zeqfreed © (2006-10-02 09:18) [1]Закрыть таки форму или окно? Если окно, то что такое имя окна? Если форму, то см. Screen.Forms.
← →
Officeman (2006-10-02 09:39) [2]нужно програмно закрыть форму.
имя формы хранится в (переменной) :string
Screen.Forms. ??? не понял :(
что с ним делать?
p.s.
мм. раньше и незадумывался. для меня окно и форма это одно и тоже)
← →
ЮЮ © (2006-10-02 09:46) [3]
> Screen.Forms. ??? не понял :(
> что с ним делать?
В цикле пробежать, сравнивая "Form2" со свойствами Forms[i]
Кстакти, какое отношенеие имеет глобальная переменная, указывающая на объект с самим этим объектом? Вопрос риторический :) Никакого !!!
Тогда уж храни имя класса "TForm2".
Откуда вообще взялось это "Form2"? Как оно взялось в переменной p? Почему вместо этой p не использовать просто Form2?
← →
Officeman (2006-10-02 10:04) [4]2ЮЮ ;)
пишу прогу в которой формы будут дочерними.
хочется написать одну процедурку которая и будет следить за
дочер.формами программы. показать, скрыть, свернуть, закрыть
расположить и пр.. таким образом будет некий порядок в программе, а так же
удобная модернизация и отладка в будущем.
Дочерние формы заведомо существуют в прогамме. Создавать их не
требуется.
Нужно циклом перебирать все кроме Form1 и выполнять код обработки.
для работы с компонентами я использовал FindComponent, а тут Формы. ;(
← →
MacroDenS © (2006-10-02 10:06) [5]или отправить сообщение:
var
H:HWND;
begin
h:=FindWindow(nil, PChar(<переменная>);
If h<>0 then
SendMessage(handle, wm_Close,0, 0);
end;
← →
Officeman (2006-10-02 10:24) [6]2MacroDenS
данная вами обработка не работает.
просто пропускается код.
← →
ЮЮ © (2006-10-02 10:31) [7]хочется написать одну процедурку которая и будет следить за
Первым параметром сделай (AForm: TForm;
а не строку содержащую "Form2", не имеющую никакого отношения к дочерним формам приложения.
← →
MacroDenS © (2006-10-02 10:56) [8]to Officeman (02.10.06 10:24) [6]
не сразу разобрался в вопросе.
Напиши код как ты создаешь доч. форму.
← →
Плохиш © (2006-10-02 11:10) [9]
> Officeman (02.10.06 09:39) [2]
> Screen.Forms. ??? не понял :(
> что с ним делать?
Ну для начала надо всё-таки что-нибудь почитать.
← →
Officeman (2006-10-02 11:52) [10]2Плохиш, не надо умничать)
попробуйте сами.
вопрос в том, чтобы циклом
закрыть все существующие дочерние формы.
на примере: 4 формы. Form1 основная и три дочерних (Form2,Form3,Form4)
при
for i:=0 to Screen.FormCount-1 do begin
if Screen.Forms[i].Name<>"Form1" then begin
memo1.Lines.Add(Screen.Forms[i].Name);
//Screen.Forms[i].Close;
end;
end;
// выводится верно, но в обратной последовательности form4,form3,form2.
//а при
при
for i:=0 to Screen.FormCount-1 do begin
if Screen.Forms[i].Name<>"Form1" then begin
memo1.Lines.Add(Screen.Forms[i].Name);
Screen.Forms[i].Close;
end;
end;
// выводится уже подругому: Form4, Form4, Form2
//и формы form1, form3 остаются на экране
господа! подскажите где собака зарыта.
← →
Officeman (2006-10-02 11:55) [11]т.е. получается что при закрытии формы. она автоматом убирается из FormCount. и далее в последовательности не участвует. поэтому идёт смещение.
подскажите. может есть другой способ.
← →
Сергей М. © (2006-10-02 12:09) [12]
> может есть другой способ
for i:= Screen.FormCount-1 downto 0 do..
← →
Сергей М. © (2006-10-02 12:17) [13]
> Officeman (02.10.06 11:55) [11]
Если форма "Form1" есть основная форма приложения, то достаточно будет:
for i:= Screen.FormCount-1 downto 1 do
Screen.Forms[i].Close
← →
Игорь Шевченко © (2006-10-02 12:19) [14]Officeman (02.10.06 11:52) [10]
Читать надо не что-нибудь, а книгу, источник знаний.
← →
Officeman (2006-10-02 12:24) [15]2Сергей М.
надо только дочерние окна.
← →
Officeman (2006-10-02 12:29) [16]так вернее.
for i:= Screen.FormCount-2 downto 0 do
Screen.Forms[i].Close;
спасибо . тема закрыта
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.10.22;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.043 c