Форум: "Основная";
Текущий архив: 2004.02.17;
Скачать: [xml.tar.bz2];
Внизглюк 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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.009 c