Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.08.2010, 21:06   #1
RadioButton
Пользователь
 
Регистрация: 05.08.2010
Сообщений: 11
По умолчанию радиокнопки

Здравствуйте,создаю радикнопки в форме,в свойствах формы указываю DockSite - True,в свойствах кнопок DragKind - dkDock,DragMode - automatic,после компиляции,если два раза щелкнуть на одну кнопку,она "перестает докаться",если сначала нажать на одну,потом на вторую,дальше все нормально,тоже самой происходит при щелчке с зажатым Ctrl,можно ли как-нибудь сделать,чтобы не было такой реакции на двойной щелчок?
RadioButton вне форума Ответить с цитированием
Старый 10.08.2010, 21:09   #2
DIgorevich
Погулять вышел
Участник клуба
 
Аватар для DIgorevich
 
Регистрация: 17.05.2010
Сообщений: 1,573
По умолчанию

А для чего такие свойства было задавать?
Никогда не знаешь, где тебе повезет... (Фрай)
DIgorevich вне форума Ответить с цитированием
Старый 10.08.2010, 22:31   #3
RadioButton
Пользователь
 
Регистрация: 05.08.2010
Сообщений: 11
По умолчанию

чтоб кнопки можно было перемещать по форме
RadioButton вне форума Ответить с цитированием
Старый 11.08.2010, 09:14   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Вот на скорую руку пример:
Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    procedure RadioButton1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure RadioButton1EndDock(Sender, Target: TObject; X, Y: Integer);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var ax,ay:integer;
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.RadioButton1MouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
 TRadioButton(sender).DragKind:=dkDock;
 TRadioButton(sender).BeginDrag(true,50);
 ax:=x;ay:=y;
end;

procedure TForm1.RadioButton1EndDock(Sender, Target: TObject; X,
  Y: Integer);
var r:TPoint;
begin
 with TWinControl(sender) do begin
  Parent:=self;
  r:=ScreenToClient(Point(x,y));
  Left:=r.x-ax;
  top:=r.y-ay;
 end;
end;

end.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 11.08.2010, 09:42   #5
RadioButton
Пользователь
 
Регистрация: 05.08.2010
Сообщений: 11
По умолчанию

все равно та же проблема
RadioButton вне форума Ответить с цитированием
Старый 11.08.2010, 12:28   #6
r9m
₪₪₪₪₪₪₪₪
Форумчанин
 
Аватар для r9m
 
Регистрация: 16.04.2007
Сообщений: 471
По умолчанию

Stilet
Да что ж такое то а? Стреляем по бабочкам из минигана?

Код:
procedure TForm1.RadioButton2MouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  ReleaseCapture;
  RadioButton2.Perform(WM_SYSCOMMAND, $F012, 0);
end;
r9m вне форума Ответить с цитированием
Старый 11.08.2010, 12:44   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Стреляем по бабочкам из минигана?
Да. А точнее из Дефы
Автору насколько я понял не просто таскать нужно а чтоб еще и Радиокнопка свое состояние меняла.
Я попробовал твой код - Таскать то таскает, но я не могу ее состояние поменять, точка не ставится
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 11.08.2010, 12:46   #8
DIgorevich
Погулять вышел
Участник клуба
 
Аватар для DIgorevich
 
Регистрация: 17.05.2010
Сообщений: 1,573
По умолчанию

а точку можно ставить программно на MouseUP
Никогда не знаешь, где тебе повезет... (Фрай)
DIgorevich вне форума Ответить с цитированием
Старый 11.08.2010, 12:53   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
DIgorevich
Попробуй )
У меня этот вариант не работает.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 11.08.2010, 13:10   #10
DIgorevich
Погулять вышел
Участник клуба
 
Аватар для DIgorevich
 
Регистрация: 17.05.2010
Сообщений: 1,573
По умолчанию

Добился результата:
Код:
procedure TForm1.rb1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  rb1.Perform(WM_SYSCOMMAND, $F012, 0);
end;

procedure TForm1.rb1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
     ReleaseCapture;
  if rb1.Checked then
    rb1.Checked:=false
  else
    rb1.Checked:=true;
end;
Никогда не знаешь, где тебе повезет... (Фрай)
DIgorevich вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Visual C++ Двойное ветвление через радиокнопки. Jabodav Помощь студентам 5 30.01.2010 18:55