powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / RadioGroup запрос перед клик?
13 сообщений из 13, страница 1 из 1
RadioGroup запрос перед клик?
    #39613929
verve
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно ли сделать запрос на изменение на клик и в случае отмены ничего не делать. Чтобы точка не перескакивала.
...
Рейтинг: 0 / 0
RadioGroup запрос перед клик?
    #39613982
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
verve,

можно, разрешаю :)

зы. попробуй запомнить предыдущий ItemIndex, если условие не выполнится, то верни все взад
...
Рейтинг: 0 / 0
RadioGroup запрос перед клик?
    #39614003
verve
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Док, к сожалению, нужно, чтобы ItemIndex вообще не изменился... так как вы предлагаете, я сделал.. но это не выход
...
Рейтинг: 0 / 0
RadioGroup запрос перед клик?
    #39614033
Gerasimenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
verveДок, к сожалению, нужно, чтобы ItemIndex вообще не изменился... так как вы предлагаете, я сделал.. но это не выход
Тут программист нужен.
А посему: замени на GroupBox и отдельно туда кинь RadioButton - ы. Там более просто управлять...
...
Рейтинг: 0 / 0
RadioGroup запрос перед клик?
    #39614116
kep-ko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
private // TForma
  procedure WMCommand(var Message: TWMCommand); message WM_COMMAND;

procedure TForma.WMCommand(var Message: TWMCommand);
begin
 with Message do
  if (NotifyCode = BN_CLICKED)
   and ((Ctl = RadioButton1.Handle) or (Ctl = RadioButton2.Handle) or (Ctl = RadioButton3.Handle))
    and NoClickTest()
     then Exit;
 inherited;
end;

verve,
...
Рейтинг: 0 / 0
RadioGroup запрос перед клик?
    #39614137
Belotsky Serge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
verveДок, к сожалению, нужно, чтобы ItemIndex вообще не изменился... так как вы предлагаете, я сделал.. но это не выход

А как вы сделали? Это можно сделать в обработчике TRadioGroup.OnClick.
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
procedure TForm1.RadioGroup1Click(Sender: TObject);
begin
 with TRadioGroup(Sender)do
   begin
// делаем что надо
// ...
// возвращаем обратно ItemIndex
    OnClick := nil; // для того, чтобы не вызвался OnClick на следующей строке
    ItemIndex := PrevItemIndex;
    OnClick := RadioGroup1Click; // вернуть обратно обработчик
   end;
end;

...
Рейтинг: 0 / 0
RadioGroup запрос перед клик?
    #39614155
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kep-ko,

проще так (хоть и кода больше)
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
  { TForm1 }

  TForm1 = class(TForm)
    ChBox: TCheckBox;
    Label1: TLabel;
    RadioGroup1: TRadioGroup;
    procedure FormCreate(Sender: TObject);
    procedure RadioGroup1SelectionChanged(Sender: TObject);
  private
    FItemIndex: Integer;
  public

  end;

var
  Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.RadioGroup1SelectionChanged(Sender: TObject);
begin
  if not ChBox.Checked then
  begin
    RadioGroup1.ItemIndex:= FItemIndex;
    Label1.Caption:= 'Opps! You can''t change ItemIndex while property checkbox.checked is not in checked state';
    exit;
  end;

  FItemIndex:= RadioGroup1.ItemIndex;
  Label1.Caption:= 'We''re changing ItemIndex';
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  ChBox.Checked:= True;
  Label1.Caption:= '';
  FItemIndex:= RadioGroup1.ItemIndex;
  RadioGroup1SelectionChanged(Sender);
end; 




...
Рейтинг: 0 / 0
RadioGroup запрос перед клик?
    #39614179
Tactical Nuclear Penguin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Докkep-ko,

проще так (хоть и кода больше)


что такое RadioGroup1SelectionChanged?
...
Рейтинг: 0 / 0
RadioGroup запрос перед клик?
    #39614190
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tactical Nuclear Penguin,

Метод TRadioGroup в лазарусе
...
Рейтинг: 0 / 0
RadioGroup запрос перед клик?
    #39614194
kep-ko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Док, там упрощённо, не кросcплатформно )) и не отвечает тз. Веселится нужно так:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
var
 Forma: TForma;
 OldRadio : function (Wnd :HWND; Msg :Cardinal; WParam:WPARAM; LParam:LPARAM):LRESULT; stdcall;

implementation

function NewRadio(Wnd :HWND; Msg :Cardinal; wParam:WPARAM; lParam:LPARAM):LRESULT; stdcall;
var
 item:Integer;
begin
 if Msg = WM_COMMAND then
  if HiWord(wParam) = BN_CLICKED then
   with Forma.RadioGroup1 do
    for item := 0 to Items.Count-1 do
     if lParam = Buttons[item].Handle then
      if Forma.AllowClick(item) then Break else Exit(0);
 Result := OldRadio(Wnd, Msg, wParam, lParam);
end;

procedure TForma.FormCreate(Sender: TObject);
begin
 OldRadio := Pointer(GetWindowLongPtr(RadioGroup1.Handle, GWLP_WNDPROC));
 SetWindowLongPtr(RadioGroup1.Handle, GWLP_WNDPROC, UIntPtr(@NewRadio));
end;

...
Рейтинг: 0 / 0
RadioGroup запрос перед клик?
    #39614265
verve
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Belotsky Serge,
работает, но если свернуть развернуть окно, в какой-то момент времени выскакивает окно при активации и отказ не работает...
Что не так?

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
var NewTag:integer;
begin

   Rg.OnClick := nil;
   NewTag:=RG.ItemIndex;
   Rg.ItemIndex := RG.Tag ;
   if (MessageDlg('Edthty?'+IntToStr(NewTag),mtConfirmation, [mbYes,mbNo], 0)= mrYes)
     then
      RG.ItemIndex:=NewTag;

    Rg.OnClick := RGClick;
    RG.TAg:=RG.ItemIndex;

end;
...
Рейтинг: 0 / 0
RadioGroup запрос перед клик?
    #39614284
verve
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Belotsky Serge,
похоже, что проблема была в фокусе.
...
Рейтинг: 0 / 0
RadioGroup запрос перед клик?
    #39614399
kep-ko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
verve, ех-ох MessageDlg )
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
 procedure AllowClick(var Msg: TMessage); message WM_USER;

var
 Forma: TForma;
 OldRadio : function (Wnd :HWND; Msg :Cardinal; WParam:WPARAM; LParam:LPARAM):LRESULT; stdcall;

implementation

function NewRadio(Wnd :HWND; Msg :Cardinal; wParam:WPARAM; lParam:LPARAM):LRESULT; stdcall;
var
 item:Integer;
begin
 if (Msg = WM_COMMAND)then
  if HiWord(wParam) = BN_CLICKED then
   with Forma.RadioGroup1 do
    if Tag = 0 then
     for item := 0 to Items.Count-1 do
      if lParam = Buttons[item].Handle then
       if item <> ItemIndex then Exit(Byte(PostMessage(Forma.Handle, WM_USER, item, 0)))
        else Break;
 Result := OldRadio(Wnd, Msg, wParam, lParam);
end;

procedure TForma.AllowClick(var Msg: TMessage);
begin
 RadioGroup1.Tag := Msg.wParam + 1;
 if MessageDlg('Edthty?'+IntToStr(Msg.WParam),mtConfirmation, [mbYes,mbNo], 0) = mrYes
  then RadioGroup1.ItemIndex := Msg.wParam;
 RadioGroup1.Tag := 0;
end;

...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / RadioGroup запрос перед клик?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]