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

Вниз

глюк TRadioButton   Найти похожие ветки 

 
Beat   (2004-02-03 09:02) [0]

Проблема следующая:
Есть у меня форма (скажем Form2) на которой размещены несколько RadioButton"ов. Перед отображением формы (ShowModal) я _программно_ задаю Checked у конктретной радио кнопки и в первый раз отображения окна все работает ок, НО если я пощелкаю на других радио кнопках (т.е. сделаю другую checked), то после закрытия формы ее снова показать - радио кнопка ПЛЕВАТЬ хотела на программную установку (на самом деле не так, она принимает отметку, но после отметка устанавливается на последнюю отмеченную в окне радио кнопку). Кто задает checked и по какому праву я не понимаю... Люди добрые подскажите как фиксить? Неужели никто не сталкивался?

з.ы. TRadioGroup НЕ предлагать!


 
BlackLord2003 ©   (2004-02-03 09:43) [1]

Ты хоть сохраняешь настройи? Я имею ввиду:
uses INIFiles,
............

или
uses Registry,
............


 
VAleksey ©   (2004-02-03 09:45) [2]

Какое событие используешь для установки значений?


 
Beat ©   (2004-02-03 09:49) [3]

2VAleksey:
OnShow (Да не важно, на самом деле, тоже делаю и перед ShowModal)

BlackLord2003 ©:
да не нужно мне сохранять настройки, я говорю про текуцщий сеанс: показал, закрыл, снова показал - получил глюк


 
VAleksey ©   (2004-02-03 09:52) [4]

Хм... Должно работать.
Давай код.


 
Beat ©   (2004-02-03 09:58) [5]

А толку от кода, то, но вот сие ваяние:

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.RadioButton1.Checked := True;
Form2.ShowModal();
end;

end.

unit Unit2;

interface

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

type
TForm2 = class(TForm)
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
RadioButton3: TRadioButton;
RadioButton4: TRadioButton;
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form2: TForm2;

implementation

{$R *.dfm}

end.


 
Beat ©   (2004-02-03 10:10) [6]

Есть идеи, уважаемые???

Оффтоп:
Пример прост до безобразия (в плане КАК еще никто не напарывался). Я валяюсь от глючности не то Борланда, не то от мелкомягких...


 
Verg ©   (2004-02-03 10:34) [7]

Суть этого эффекта состоит в том, что при активизации формы она пытается восстановить сфокусированный контрол. А у радиобуттона фокус однозначно связан с checked. Вот и получается такая фишка: ты checked делаешь одному буттону, а сфокусированным был другой и при восстановлении он вернет себе фокус и соотв. checked;

Вместо
Form2.RadioButton1.Checked := True;
Form2.ShowModal();

Делай
Form2.ActiveControl:=Form2.RadioButton1;
Form2.ShowModal();

Если бы на форме был бы еще какой-нибудь контрол, например, TEdit и при закрытии формs именно он был бы фокусированным, то и твой пример работал бы.


 
Beat ©   (2004-02-05 08:07) [8]

Типа спасибо, но я, так сказать опытным путем, пришел к следующему:

Form2.RadioButton1.Checked := true;
Form2.ActiveControl := Form2.FindNextControl(NULL, true, true, false);
Form2.ShowModal();

т.е. говоря работает НА ЛЮБЫХ формах, с разным количеством разных элементов.

Рекомендую к употреблению!


 
Verg ©   (2004-02-05 10:09) [9]


> Beat © (05.02.04 08:07) [8]


Хм. Насколько я знаю, FindNextControl находится в protected методах TWinControl-а

Как же ты это скомпилял-то?
Надо проверить...


 
Beat ©   (2004-02-06 08:00) [10]

Ух, блин конечно в ТАКОМ виде так просто не заработает - сие находится в OnShow у Form2. Я сам принцип описал... (смущенно) ;)



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

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

Наверх




Память: 0.49 MB
Время: 0.018 c
1-53546
zamkom
2004-02-09 11:16
2004.02.17
MessageDlg


3-53414
NewD
2004-01-26 06:54
2004.02.17
Глюк Ado в Акцессе


7-53777
Kinder
2003-11-20 16:14
2004.02.17
Как узнать закрыт или открыт сидюк?


14-53712
RIMMER
2004-01-30 10:29
2004.02.17
Мой новый веб-проект


3-53394
chtr
2004-01-27 09:21
2004.02.17
Фильтрация по выбору из DBLookupCombobox