Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.46 MB
Время: 0.008 c
6-53682
Бэтман
2003-12-15 16:29
2004.02.17
Список компьютеров в локалке


3-53422
ERDEN
2004-01-26 07:34
2004.02.17
Вопрос по ExcelApplication


1-53541
Виталя
2004-02-05 14:25
2004.02.17
Как поймать момент, когда мое приложение теряет активность


1-53624
R
2004-02-06 15:56
2004.02.17
Как импортировать ссылку в мемо из браузера


14-53722
Clift
2004-01-23 19:08
2004.02.17
---|Ветка была без названия|---





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский