Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Имитировать нажатие кнопки 
:(
    Опции темы
neweraser
Дата 28.10.2008, 09:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 598
Регистрация: 17.2.2008

Репутация: нет
Всего: 6



Доброго времени суток!
Суть в том, что допустим, сущ. 3 кнопки: Button1, Button2 и Button3.
При нажатии на Button3 происходит действие, как будто бы пользователь нажал на первую или вторую кнопки.
На первую или вторую кнопки я уже придумал (довольно тупо, но не знаю как еще), а вот как именно имитировать? вот что у меня примерно выходит:
Код

Procedure Button3.Click(Sender: TObject);
var
  i: integer;
begin
  Randomize;
  i:= Random(10);
  if i < 5 then
  ... // нажатие на Button1
  else
  ... // нажатие на Button2





--------------------
Кто ищет, тот всегда найдет.
PM MAIL ICQ Skype   Вверх
Poseidon
Дата 28.10.2008, 09:36 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 53
Всего: 133



Код
Button2.Click



--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
neweraser
Дата 28.10.2008, 09:37 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 598
Регистрация: 17.2.2008

Репутация: нет
Всего: 6



поторопился с созданием топика, это ведь просто дописать там Button1.Click и Button12.Click?
тогда как же все таки по-другому сделать случайность?


--------------------
Кто ищет, тот всегда найдет.
PM MAIL ICQ Skype   Вверх
THandle
Дата 28.10.2008, 09:37 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 65
Всего: 372



Либо я тебя не понял smile , либо:
Код


Button1.Click;
Button2.Click;

PM   Вверх
Poseidon
Дата 28.10.2008, 09:37 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 53
Всего: 133



Цитата(neweraser @  28.10.2008,  09:34 Найти цитируемый пост)
Procedure Button3.Click(Sender: TObject);
Это откуда взялось? Что-то я не понял что тебе надо и что ты там наделал.



--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
neweraser
Дата 28.10.2008, 09:40 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 598
Регистрация: 17.2.2008

Репутация: нет
Всего: 6



Цитата(Poseidon @  28.10.2008,  09:37 Найти цитируемый пост)
Это откуда взялось?

это я забыл дописать TForm1, delphi под рукой нет...

 smile предложение создать раздел для тупых...


--------------------
Кто ищет, тот всегда найдет.
PM MAIL ICQ Skype   Вверх
THandle
Дата 28.10.2008, 09:43 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 65
Всего: 372



neweraser, что тебе надо то???

Это что ли:
Код

(FindComponent('Button' + IntToStr(Random(10) div 5 + 1)) as TButton).Click();


Или еще что? smile  Я лично не очень врубаюсь smile 

Это сообщение отредактировал(а) THandle - 28.10.2008, 09:46
PM   Вверх
Poseidon
Дата 28.10.2008, 09:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 53
Всего: 133



Код

procedure TForm1.Button3Click(Sender: TObject);
var
  i: integer;
begin
  Randomize;
  i:= Random(10);
  if i < 5 then
    Button1.Click;
  else Button2.Click;
end;


Добавлено через 1 минуту и 33 секунды
THandle, бедная моя программа, если я додумаюсь какой-нить TRxButtom назвать Buttom2  smile 


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
neweraser
Дата 28.10.2008, 09:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 598
Регистрация: 17.2.2008

Репутация: нет
Всего: 6



Цитата(neweraser @  28.10.2008,  09:40 Найти цитируемый пост)
предложение создать раздел для тупых... 

это я так, в смысле про меня, не подумайте если что  smile 

Цитата(THandle @  28.10.2008,  09:43 Найти цитируемый пост)
(FindComponent('Button' + IntToStr(Random(2) + 1)) as TButton).Click();

думаю, это лучше, чем я придумал вначале, все, спасибо!


--------------------
Кто ищет, тот всегда найдет.
PM MAIL ICQ Skype   Вверх
THandle
Дата 28.10.2008, 09:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 65
Всего: 372



Poseidon, ты про as TButton? Думаю конопки все должны идти от TWinControl и Handle имеют, так что тогда:
Код


SendMessage((FindComponent('Button' + IntToStr(Random(10) div 5 + 1)) as TWinControl).Handle, BM_CLICK, 0, 0);



Ну ребят, дайте ж вы человеку с утра поизвращаться smile 
PM   Вверх
neweraser
Дата 28.10.2008, 09:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 598
Регистрация: 17.2.2008

Репутация: нет
Всего: 6



ага, спасибо за совет, THandle  smile 
а вообще на самом деле у меня не Button1 и Button2 (это так, от балды написал), а YesBtn и NoBtn, придется наверное тогда переменовывать


--------------------
Кто ищет, тот всегда найдет.
PM MAIL ICQ Skype   Вверх
THandle
Дата 28.10.2008, 10:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 65
Всего: 372



Код

const
  BtnNames: array [0..1] of String = ('YesBtn', 'NoBtn');
begin
  SendMessage((FindComponent(BtnNames[Random(10) div 5]) as TWinControl).Handle, BM_CLICK, 0, 0);
end;


 smile 
PM   Вверх
Poseidon
Дата 28.10.2008, 10:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 53
Всего: 133



THandle, выкрутился smile


Это сообщение отредактировал(а) Poseidon - 28.10.2008, 10:33


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
THandle
Дата 28.10.2008, 10:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 65
Всего: 372



Цитата(Poseidon @  28.10.2008,  10:31 Найти цитируемый пост)
Последний код правда интересный. Особенно что касается индексов массива smile


А чо в них интересного? smile 0 и 1 smile

Высчитываются по Random(10 div 5). Выхода за пределы нормы не будет)
Ибо:

0..4 div 5 = 0
5..9 div 5 = 1

smile

А вообще я просто болею сча, поэтому и оффтоплю =)

Добавлено через 1 минуту и 7 секунд
Poseidon, кстати в твоем варианте переменная i не нужна.

Добавлено через 2 минуты и 20 секунд
Код

procedure TForm1.Button3Click(Sender: TObject);
begin
  Randomize;
  if Random(10) < 5 then
    Button1.Click;
  else 
    Button2.Click;
end;

PM   Вверх
neweraser
Дата 28.10.2008, 11:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 598
Регистрация: 17.2.2008

Репутация: нет
Всего: 6



так какой лучше? наверное мой,
он сильно простой для понимания smile 



--------------------
Кто ищет, тот всегда найдет.
PM MAIL ICQ Skype   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0633 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.