Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Почему не работает CheckBox2 ? [D3, Win95/98]


inko ©   (2002-04-13 15:15:00) 

Отмечен CheckBox2 на форме или нет, почему-то выводится только сообщение "Копия создана !".
И еще - почему не хочет показываться Файл справки, при нажатии на кнопку "Help"?
Пожалуйста, помогите разобраться.
-----------------------------------------------------------------
Function CreateDialog(FileName : string) : string;
var
CheckBox2: TCheckBox;
AMsgDialog: TForm;
BEGIN
AMsgDialog := CreateMessageDialog("Пример сообщения ", mtConfirmation, [mbYes, mbNo, mbCancel, mbHelp]);

CheckBox2 := TCheckBox(TForm);

with AMsgDialog do try
Caption := "File Killer" ;
Case ShowModal of
//Button "Yes"
ID_YES: begin

//Отмечен CheckBox2 или нет - выводится только сообщение "Копия создана !" Почему?
IF CheckBox2.Checked THEN
ShowMessage("Копия создана !")
ELSE
ShowMessage("Копия НЕ была создана !");


end;

//Button "No"
ID_NO: begin ShowMessage("Нажата кнопка NO"); end;
//Button "Cancel"
ID_CANCEL: //begin Cancel end;

//Button "Help". А здесь не хочет показывать Help.
ID_HELP: begin Application.HelpCommand(TButton(Sender).HelpContext);end;
end;
finally
Free;
end;
end;
-----------------------------------------------------------------


inko   (2002-04-17 15:30:00) [1]

Огромное спасибо всем учасникам обсуждения данного вопроса.

Если кому интересно, привожу реально работающий код, но без кнопки HELP,
я с ней так и не разобрался (отказывается она выводить мой Help),
пришлось забить на нее:

{---------------------------------------------------------------}
Function CreateDialog(FileName : string) : string;
var
FileInfo: TSearchRec;
r : Integer;
begin
r := FindFirst(Filename, FaAnyfile, FileInfo);
while r = 0 do begin
if ((FileInfo.Attr and FaDirectory <> FaDirectory) and
(FileInfo.Attr and FaVolumeId <> FaVolumeID)) then
r := FindNext(FileInfo)
end;
AMsgDialog := CreateMessageDialog("Перезагрузить компьютер немедленно ? ", mtConfirmation, [mbYes, mbNo, mbCancel]);

CheckBox2 := Form1.CheckBox2;

with AMsgDialog do
try
Caption := "File Killer" ;
Case ShowModal of

//Button "Yes"
ID_YES: begin
IF CheckBox2.Checked THEN
ShowMessage("CheckBox2 отмечен !");
ELSE
ShowMessage("CheckBox2 НЕ отмечен !");
end;

//Button "No"
ID_NO: begin
IF CheckBox2.Checked THEN
ShowMessage("CheckBox2 отмечен !");
ELSE
ShowMessage("CheckBox2 НЕ отмечен !");
end;

//Button "Cancel"
ID_CANCEL:
begin
Close;
end;

end;
finally
Free;
end;
end;
{---------------------------------------------------------------}



Anatoly Podgoretsky   (2002-04-14 14:01:00) [2]

А эти строки в каком методе описаны?


inko   (2002-04-14 13:29:00) [3]


Удалил я эту строку.

CheckBox2 := TCheckBox(TForm);

Раньше без нее прога компилится не хотела, а теперь нормально (я уже не помню, где и какие сделал изменения), но условие

IF CheckBox2.Checked THEN
ShowMessage("Копия создана !")
ELSE
ShowMessage("Копия НЕ была создана !");


всеравно не пашет !


Erlend   (2002-04-14 13:10:00) [4]

Зачем вообще нужен CheckBox2 и CheckBox2 := TCheckBox(TForm);?
Если компонент есть на форме, то его и опрашивай.


if Form1.CheckBox1.Checked then ...


Anatoly Podgoretsky   (2002-04-14 12:19:00) [5]

Это тебя трудно понять, что ты ътим хотел сказать CheckBox2 := TCheckBox(TForm);


inko   (2002-04-14 11:38:00) [6]

> Fantasist

Я НЕ ПОНИМАЮ...


Fantasist   (2002-04-13 22:37:00) [7]


> CheckBox2 := TCheckBox(TForm);
>


Надо же такое придумать. :)
Преобразовать в указатель на TCheckBox индификатор класса TForm.
Странно, что вот тут:

IF CheckBox2.Checked THEN
ShowMessage("Копия создана !")
ELSE
ShowMessage("Копия НЕ была создана !");

Нет Access Violation - значение CheckBox2 нам известно, но что находиться по этому адресу можно только гадать. Неужто, по чистой случайности, в CheckBox2.Checked что-то(по идее функция), что возвращает True? Прямо Wonder Programm. :)



Donal_Graeme   (2002-04-13 19:48:00) [8]


> Отмечен CheckBox2 на форме или нет.


следовательно CheckBox на форме уже есть и создавать его не надо.
доступ к такому CheckBox осуществляется как я сказал - Form1.Checkbox2

вообще можно написать вот так -
If (Form1.CheckBox2.Checked) then
---
А перед вызовом Application.HelpCommand, надо присвоить имя файла справки в Application.HelpFile
т.е.

ID_HELP:
begin
Application.HelpFile := "MyHelp.hlp";
Application.HelpCommand(TButton(Sender).HelpContext);
end;


Erlend   (2002-04-13 17:58:00) [9]

Может так:
CheckBox2 := TCheckBox. Create(Form1);


inko   (2002-04-13 17:31:00) [10]

> MCFire ©

Т.е. включить обе строки в код Function CreateDialog(); ?

CheckBox2:=TCheckBox(TForm1);
CheckBox2.Parent:=Form1;


MCFire   (2002-04-13 17:00:00) [11]

CheckBox2:=TCheckBox(TForm1)
CheckBox2.Parent:=Form1;
....


MCFire   (2002-04-13 16:58:00) [12]

Нужно новый CheckBox поместить на форму оператором
CheckBox2.Parent:=Form1;


inko   (2002-04-13 16:56:00) [13]

> Donal_Graeme

1. C CheckBox попробую.

2. Установлен ли Application.HelpFile... Что имеется ввиду?



Donal_Graeme   (2002-04-13 16:42:00) [14]

1. Потому что не TCheckBox (TForm), а Form1.CheckBox2
а ещё лучше внести эту функцию в форму.

2. А у тебя раньше до вызова хелпа Application.HelpFile установлен?


Наверх

Титульная страница Поиск, карта сайта Написать письмо