как узнать сколько раз нажали TButton
На крайний случай, у каждого визуального компонента VCL есть свойство целочисленное Tag, которое программист сам может использовать в своих целях
это лучше ,если надо считать нпжатия у более,чем одной кнопки вместе.
Что помечено серым необязательно, на случай если придётся integer перевести в String!!!
[COLOR=gray]var[/COLOR]
[COLOR=gray]S : string;[/COLOR]
begin
Button1.Tag := Button1.Tag + 1;
[COLOR=gray]S := IntToStr(Button1.Tag); //Преобразую integer в String-необязательно[/COLOR]
[COLOR=gray]ShowMessage(S);[/COLOR]
end;
И не получится :D
"goto" хорош на бейсике. Не на VBA, а на обычном досовском QBASIC.
В объектно-ориентированном коде вполне достаточно последовательности if // else if // else
var
S : string;
begin
Button1.Tag := Button1.Tag + 1;
if Button1.Tag = 1 then
begin
SvaritCofe();
break;
end else
if Button1.Tag = 2 then
begin
ShoditVKino();
break;
end else
if Button1.Tag = 3 then
begin
VyuchitUroki();
break;
end ...
и т.д. и т.п...
end;
"goto" хорош на бейсике. Не на VBA, а на обычном досовском QBASIC.
В объектно-ориентированном коде вполне достаточно последовательности if // else if // else
Если что, то сканает еще Exit; Break; Continue; Halt;
goto сейчас вообще считается плохим стилем.
Напиши 5 меток в 1 процедуре и дай кому-нить разобраться.:D
var
a:integer;
procedure ....
begin
a:=a+1;
end
То одно, то другое...
Зы. Некоторые сообщения куда-то подевались...
То одно, то другое...
Зы. Некоторые сообщения куда-то подевались...
ответ я получил уже из всего высказанного, мне требовалось чтоб при нажатии кнопки появлялся edit1, при повторном нажатии edit2 и т.д.
в принципе получилось осталось только по человечески переписать это - без goto
и может подскажите книгу в которой такие мелочи расписаны? а то обычно всё как-то очень обще
и может подскажите книгу в которой такие мелочи расписаны? а то обычно всё как-то очень обще
В OnEnter или OnExit проверь Items.Count. Если =1, то уменьши до нужного размера
а как это записать в коде то? допустим так не получилось
procedure TForm1.Memo1Enter(Sender: TObject);
begin
if items.count=1 then
showmessage('qqq');
end;
var Memo: TMemo;
begin
if Assigned(Sender as TMemo) then
begin
Memo := Sender as TMemo;
Memo.Height := Memo.Lines.Count * Abs(Memo.Font.Height * 2);
end;
end;
Memo.Height := Memo.Lines.Count * Abs(Memo.Font.Height * 2); - конечно не правильно. Считать нужно по-другому. Но это уже тема другая.
PS. Да, проверка тут вобщем-то не нужна (Assigned), т.к. событие происходит в существующем объекте. Но, это я по привычке - бережённому кто-то чего-то с утра подаёт... :D
Ооо мда... goto помню раза 2 пользовался, года два назад когда начинал раздуплятся. А если еше в Delphi пользоватся, то это :D Сощитать сколько раз нажимали на кнопку, по моему самое легкое из легкого. впечатление что horror что-то пропустил %) Лучше мне помогите, с моей гребаной задачей. :(
TIncButton = class (TButton)
private
FClickCounter: Integer;
public
constructor Create(AOwner: TComponent); override;
procedure Click; override;
property ClickCounter: Integer read FClickCounter;
end;
TForm1 = class(TForm)
Memo1: TMemo;
Button1: TButton;
procedure FormCreate(Sender: TObject);
private
procedure BtnClick(Sender: TObject);
public
MyButton: TIncButton;
end;
implementation
{ TIncButton }
procedure TIncButton.Click;
begin
inherited Click;
Inc(FClickCounter);
end;
constructor TIncButton.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
Parent := TWinControl(AOwner);
end;
{ TForm1 }
procedure TForm1.BtnClick(Sender: TObject);
begin
Memo1.Lines.Add(IntToStr(MyButton.ClickCounter));
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
MyButton := TIncButton.Create(Self);
MyButton.Top := 20;
MyButton.Left := 20;
MyButton.OnClick := BtnClick;
end;
Memo1 - это для наглядности происходящего.;)
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
Edit1:TEdit; Edit2:TEdit;
i:integer;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
Edit1:=TEdit.Create(Form1); Edit1.Parent:=Form1; Edit1.Visible:=false;
Edit2:=TEdit.Create(Form1); Edit2.Parent:=Form1; Edit2.Visible:=false;
end;
procedure TForm1.Button1Click(Sender: TObject);
label nac;
begin
nac:
Button1.Tag := Button1.Tag + 1;
i := Button1.Tag;
if i=1 then
begin
with Edit1 do
begin
Edit1.Visible:=true;
Left:=16; Top:=40; Width:=121; Height:=21;
goto nac;
end;
end;
if i=3 then
begin
with Edit2 do
begin
Edit2.Visible:=true;
Left:=16; Top:=128; Width:=121; Height:=21;
goto nac;
end;
end;
end;
end.
понятно как с if-else-if написать но уже лень переписывать
<...>
понятно как с if-else-if написать но уже лень переписывать
А зря, зря. Кривизну рук лечить надо чтением полезной литературы.
Самое правильное абстрагироваться от конкретной задачи и подумать над функционалом, который поможет не громоздить излишний код.