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

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

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.05.2009, 13:18   #1
ToKS
Пользователь
 
Регистрация: 17.05.2009
Сообщений: 30
По умолчанию Проверка на нажатие кнопки во время работы программы

Люди помогите!! Мне срочно надо написать прогу!! У меня такая ситуация: Мне надо сделать условие на обработчик событий!! То есть если кнопка нажата то делать то то!! Короче If <нажатие кнопки> then k:=1; как правильно написать это <нажатие кнопки>!!
ToKS вне форума Ответить с цитированием
Старый 17.05.2009, 13:24   #2
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Цитата:
Короче If <нажатие кнопки> then k:=1; как правильно написать это <нажатие кнопки>!!
Это не надо. У кнопки есть обработчик события на её нажатие.
Код:
Procedure TForm1.Button1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
Begin
Showmessage('Кнопка нажата');
End;
Всегда рад помочь!
Terran вне форума Ответить с цитированием
Старый 17.05.2009, 13:47   #3
ToKS
Пользователь
 
Регистрация: 17.05.2009
Сообщений: 30
По умолчанию

Ты не понял!! Это я знаю!! А мне надо именно как правильно описать это нажатие кнопки!! Просто у меня 4 кнопки и на каждой по циклу будут идти правильные ответы, мне надо что б при нажатиии на правильный ответ цикл шёл дальше, и надо вписать в if это нажатие кнопки, что бы не писать все правильные ответы на одной кнопке, так будет не интересно!! Подскажи как описать это нажатие!! У мя просто игра первый миллион, и надо на завтра сдать!! А я завис в этой фигне!! Или просто подскажи как по другому цикл оформить!! Ну короче что б менялись на лэйбеле вопросы а на батоне ответы и при нажатии на правильный ответ цикл шёл дальше!! Подскажи плизз!!! А то я в полной *опе!!!
ToKS вне форума Ответить с цитированием
Старый 17.05.2009, 14:01   #4
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Проверка на нажатие кнопки:
Код:
Procedure TForm1.Timer1Timer(Sender: TObject);
Begin
If Button1.Tag=1 Then
Begin
Form1.Caption:='Кнопка нажата';
End
Else
Begin
Form1.Caption:='Кнопка не нажата';
End;
End;
Procedure TForm1.Button1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
Begin
Button1.Tag:=1;
End;
Procedure TForm1.Button1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
Begin
Button1.Tag:=0;
End;
Всегда рад помочь!
Terran вне форума Ответить с цитированием
Старый 17.05.2009, 14:05   #5
ToKS
Пользователь
 
Регистрация: 17.05.2009
Сообщений: 30
По умолчанию

Terran, а у тя есть аська или контакт?? А то я что то не сильно понял!!
ToKS вне форума Ответить с цитированием
Старый 17.05.2009, 14:15   #6
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Цитата:
Сообщение от ToKS Посмотреть сообщение
Terran, а у тя есть аська или контакт?? А то я что то не сильно понял!!
Нету. Я выше привёл пример, как проверить нажата ли кнопка. Правда сложно сориентироваться, как у вас там работает прога... Вы тот код, который в таймере поставьте в свой цикл. И получится при нажатии на кнопку будет проверяться в вашем цикле нажата ли кнопка.
Всегда рад помочь!
Terran вне форума Ответить с цитированием
Старый 17.05.2009, 14:23   #7
ToKS
Пользователь
 
Регистрация: 17.05.2009
Сообщений: 30
По умолчанию

unit milion;

interface

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

type
TForm1 = class(TForm)
Image1: TImage;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
Edit1: TEdit;
Label1: TLabel;
Button1: TButton;
Label2: TLabel;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
procedure Button1Click(Sender: TObject);
procedure N3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
k:boolean;
button2,button3,button4,button5:Tbu tton;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
N1.Visible:=TRUE;
N2.Visible:=TRUE;
EDIT1.Visible:=FALSE;
LABEL1.Visible:=FALSE;
BUTTON1.Visible:=FALSE;


end;


procedure TForm1.N3Click(Sender: TObject);
var n:integer;

begin
randomize;
button2.visible:=true;
button3.visible:=true;
button5.visible:=true;button4.visib le:=true;
label2.Visible:=true;
k:=true;
while k=true do
begin
n:=random(3);
case n of
1:begin label2.caption:='Ñêîëüêî äíåé â àïðåëå?'; button2.Caption:='29';
button3.Caption:='28'; button4.Caption:='30'; button5.Caption:='31';
end;
2:begin label2.caption:='Êàêàÿ 24 áóêâà â àëôàâèòå?'; button2.Caption:='Ê';
button3.Caption:='¨'; button4.Caption:='×'; button5.Caption:='Ø';
end;
3:begin label2.caption:='×òî êðè÷àë Àðõèìåä, ñèäÿ â âàííîé?'; button2.Caption:='À. Åâðåéêà ';
button3.Caption:='Á. Èíäåéêà'; button4.Caption:='Â. Èäåéêà '; button5.Caption:='Ã. Ýâðèêà!';
end;




end;
end;
end;



end.
Смотри вот тело программы!! Исправь его пожалуйста!! Оно почему то при запуске виснет!!! И помоги как в этом цикле сделать так что б оно различало правильные ответы!! Не обращай внимания на иероглифы, там должны быть вопросы и варианты ответов!!!
ToKS вне форума Ответить с цитированием
Старый 17.05.2009, 14:26   #8
Kotofff
Участник клуба
 
Аватар для Kotofff
 
Регистрация: 11.01.2009
Сообщений: 1,917
По умолчанию

Виснет потому что в цикле while переменная k не изменяет своего значения, постоянно true.
"Заряженному танку в дуло не смотрят" @Dekmer in WoT
Kotofff вне форума Ответить с цитированием
Старый 17.05.2009, 14:42   #9
ToKS
Пользователь
 
Регистрация: 17.05.2009
Сообщений: 30
По умолчанию

unit milion;

interface

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

type
TForm1 = class(TForm)
Image1: TImage;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
Edit1: TEdit;
Label1: TLabel;
Button1: TButton;
Label2: TLabel;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
procedure Button1Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
k:boolean;
b2,b3,b4,b5:integer;


implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
N1.Visible:=TRUE;
N2.Visible:=TRUE;
EDIT1.Visible:=FALSE;
LABEL1.Visible:=FALSE;
BUTTON1.Visible:=FALSE;


end;


procedure TForm1.N3Click(Sender: TObject);
var n:integer;

begin
randomize;
button2.visible:=true;
button3.visible:=true;
button5.visible:=true;button4.visib le:=true;
label2.Visible:=true;
while k=true do
begin
n:=random(3);
case n of
1:begin label2.caption:='Сколько дней в апреле'; button2.Caption:='29';
button3.Caption:='28'; button4.Caption:='30'; button5.Caption:='31';
if b4=1 then k:=true;
end;
2:begin label2.caption:='Какая 24 буква в алфавите'; button2.Caption:='К';
button3.Caption:='Ё'; button4.Caption:='Ч'; button5.Caption:='Ш';
if b5=1 then k:=true;
end;
3:begin label2.caption:='Что кричал архимед сидя в ванной'; button2.Caption:='А. Еврейка ';
button3.Caption:='Б. Индейка'; button4.Caption:='В. Идейка '; button5.Caption:='Г. Эврика!';
if b5=1 then k:=true;
end;




end;
end;
end;



procedure TForm1.Button2Click(Sender: TObject);
begin
b2:=1;
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
b5:=1;

end;

procedure TForm1.Button3Click(Sender: TObject);
begin
b3:=1;

end;

procedure TForm1.Button4Click(Sender: TObject);
begin
b4:=1;

end;

end.
а так поячему виснет??
ToKS вне форума Ответить с цитированием
Старый 17.05.2009, 15:06   #10
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

После появления вопроса присвойте переменной K:=False; И лучше делайте проверку в самих кнопках. К примеру:
Код:
Procedure TForm1.Button2Click(Sender: TObject);
Begin
b2:=1;
if b4=1 then
begin
N3.Click;
End;
Всегда рад помочь!
Terran вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ввод вычисляемой функции во время работы программы DAV88 Помощь студентам 4 25.04.2009 15:41
Как узнать время работы программы в паскаль? bullvinkle Помощь студентам 2 26.12.2008 11:20
Создание обьектов во время работы программы Rusl92 Общие вопросы Delphi 4 11.08.2008 17:03
Создание компонентов во время работы программы Rusl92 Компоненты Delphi 23 05.04.2008 08:38
Проверка работы программы... DimkinStd Общие вопросы Delphi 3 26.12.2006 13:24