Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.06.30;
Скачать: CL | DM;

Вниз

неменяется значение RadioButton   Найти похожие ветки 

 
Alex_x ©   (2003-06-11 15:51) [0]

хочу в процедуре onShow формы изменить значение RadioButton1.Checked:=true; но оно не менятся, но срабатывает после показа формы если этот код всунуть в процедуру любой кнопки. Может в onShow его нельзя менять???


 
clickmaker ©   (2003-06-11 16:24) [1]

Вы меня извините, конечно, на сдается мне, что Вы пургу гоните... Такой код прекрасно работает

procedure TForm1.FormShow(Sender: TObject);
begin
RadioButton1.Checked := true;
end;


 
Sandman25 ©   (2003-06-11 16:34) [2]

Если RadioButton1 находится в одной группе с RadioButton2, и RadioButton2.Checked:=true выполняется позже присваивания RadioButton1.Checked:=true, то RadioButton1.Checked становится false. Таково предназначение связанных радиобатонов - только один из них может быть Checked.


 
Alex_x ©   (2003-06-11 17:27) [3]

именно таким куском кода я єто пытаюсь сделать,
но потом никаких RadioButton2.Checked:=true и.т.д не выполяется


procedure TForm1.FormShow(Sender: TObject);
begin
RadioButton1.Checked := true;
end;



 
Sandman25 ©   (2003-06-11 17:44) [4]

Я только что сделал тест. В D6 такое работает. Или покажите Ваш код, или у Вас накрылся Delphi.

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
RadioButton1: TRadioButton;
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormShow(Sender: TObject);
begin
RadioButton1.Checked := true;
end;

end.


 
Alex_x ©   (2003-06-11 17:55) [5]

вы попропуте пожалуйса переключить на RadioButton2.Checked := true; потом закрить и открить форму


 
Sandman25 ©   (2003-06-11 18:05) [6]

Да, действительно, так не работает. Хотя при отладке присваивание выполняется, и даже в ctrl+f4 показывает RadioButton1.checked = true.
Буду думать...


 
Sandman25 ©   (2003-06-11 18:13) [7]

Получается бред какой-то.
Я на ту же форму поставил кнопку с обработчиком
procedure TForm2.Button1Click(Sender: TObject);
begin
caption := inttostr(ord(radiobutton1.checked)) + ":"
+ inttostr(ord(radiobutton2.checked));
end;
Так вот если я на кнопку тыкаю, то при следующем показе
Radiobutton1.checked := true срабатывает,
а если не нажимаю, то сохраняются значения из прошлого показа формы.

Попробуйте использовать GroupBox, может он всегда корректно работает.


 
Sandman25 ©   (2003-06-11 18:15) [8]

Разобрался. Присвоение некорректно работает, если фокусе не на Radiobutton1.
Я написал
procedure TForm2.FormShow(Sender: TObject);
begin
ActiveControl := RadioButton1;
RadioButton1.Checked := true;
end;

И все заработало.
Хоть и непонятно почему :(


 
Song ©   (2003-06-11 18:22) [9]

У меня всё работает отлично. Скажите как вы заставили это не сработать?


 
Song ©   (2003-06-11 18:23) [10]

2Sandman25 © (11.06.03 18:15)
И даже если фокус не там, у меня всё равно всё работает:

procedure TForm1.FormShow(Sender: TObject);
begin
ActiveControl:=Button1;
RadioButton1.Checked:=True;
end;


 
Sandman25 ©   (2003-06-11 18:34) [11]

Song

Вот 2 файла. Нажимаешь на кнопку, появляется вторая форма, выбираешь второй radiobutton, закрываешь форму (в крестик мышкой), нажимаешь кнопку опять - опять появляется вторая форма, но выбран второй radiobutton.

Если убрать комментарий, все работает правильно - при показе второй формы выбран первый radiobutton

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
form2.show;
end;

end.

unit Unit2;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm2 = class(TForm)
Button1: TButton;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
procedure FormShow(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm2.FormShow(Sender: TObject);
begin
// ActiveControl := RadioButton1;
RadioButton1.Checked := true;
end;

procedure TForm2.Button1Click(Sender: TObject);
begin
caption := inttostr(ord(radiobutton1.checked)) + ":"
+ inttostr(ord(radiobutton2.checked));
end;

end.


 
Sandman25 ©   (2003-06-11 18:43) [12]

Только что проверил.
В Delphi3 то же самое - нужен ActiveControl для правильной работы.


 
Alex_x ©   (2003-06-12 10:16) [13]

Спасибо шо помагли, прикольный глюк :)



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

Текущий архив: 2003.06.30;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.012 c
1-97742
FRT
2003-06-18 16:40
2003.06.30
Объединение ячеек в StringGrid


3-97495
DBDev
2003-06-05 12:04
2003.06.30
Kaк добавить запись в подчиненную табл. в сеансе Append-a главной


1-97608
inspirion
2003-06-19 12:16
2003.06.30
курсор мыши


3-97543
Hawk2
2003-06-06 10:37
2003.06.30
Конструкция UPDATE&SELECT


8-97758
Askik
2003-03-19 13:14
2003.06.30
Расположение точки относительно вектора