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




Вниз

Почему не работает CheckBox2 ? 


inko   (2002-04-13 15:15) [0]

Отмечен 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;
-----------------------------------------------------------------



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

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

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



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

> Donal_Graeme

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

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




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

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



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

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



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

> MCFire ©

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

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



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

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



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


> Отмечен 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;



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


> CheckBox2 := TCheckBox(TForm);
>


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

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

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




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

> Fantasist

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



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

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



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

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


if Form1.CheckBox1.Checked then ...



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


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

CheckBox2 := TCheckBox(TForm);

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

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


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



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

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



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

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

Если кому интересно, привожу реально работающий код, но без кнопки 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;
{---------------------------------------------------------------}





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




Наверх





Память: 0.74 MB
Время: 0.018 c
1-94412           Beast                 2002-04-18 03:06  2002.04.29  
Form


1-94474           radisheva             2002-04-16 13:33  2002.04.29  
Кодировки


4-94628           Оля                   2002-02-21 10:22  2002.04.29  
Внимание! Хотелось бы обобщить вопросы по handle за последние несколько дней.


7-94581           M-A-B                 2002-02-01 12:13  2002.04.29  
СОМ-порт


1-94499           ymin                  2002-04-15 14:41  2002.04.29  
фон для формы какой-нибудь рисунок