Avatar billede pzw Nybegynder
08. juni 2003 - 22:38 Der er 3 kommentarer og
1 løsning

Hvilken Button trykkede brugeren på forrige gang

Jeg skal bruge, hvilken Button der var trykket på gangen før af brugeren, med musen eller tab.

Eks.: Når du trykker på Button2, skal det være muligt at se, at den button der var trykket på før Button2 var Button1.
/PZ
Avatar billede hermandsen Juniormester
08. juni 2003 - 23:35 #1
private
  SidsteKnap: TButton;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if SidsteKnap <> nil then
    ShowMessage('Sidste knap der blev trykket på hed: ' + SidsteKnap.Name);
  SidsteKnap := (Sender as TButton);
end;

Den laver du bare for alle dine knapper... Vælg evt. samme OnClick-event for alle knapperne, hvis de skal gøre det samme...

//hermandsen
Avatar billede pzw Nybegynder
09. juni 2003 - 22:17 #2
Svaret på mit spørgsmål er korrekt, men jeg kan ikke løse det problem jeg har i programmet.

Jeg prøver at forklare:
I mit program, skal der i et Panel indtastes en række værdier i Edit felter.
Til hvert Edit felt hører en valideringsprocedure som ligger i Edit feltets exit procedure.

Hvis brugeren trykker på Button "Cancel", skal Edit feltets exit procedure ikke udføres.
Hvis brugeren trykker på alle andre Button's eller Edit felter eller andet end Button "Cancel" skal exit proceduren udføres.
Dette kan udføres ved at exit proceduren starter med at kontrollere om den sidste Button der er trykket på er "Cancel".
Hvordan kan jeg se om exit proceduren startes fordi der er trykket "Cancel" ?

Håber det er forståeligt !!!
/PZ
Avatar billede hermandsen Juniormester
09. juni 2003 - 22:54 #3
private
  LastEdit: TEdit;
  procedure EditExit(Sender: TObject);

procedure TForm1.btnCancelClick(Sender: TObject);
begin
  if LastEdit <> nil then
    LastEdit.OnExit := nil;
end;

procedure TForm1.EditEnter(Sender: TObject);
begin
  if Sender is TEdit then
  begin
    (Sender as TEdit).OnExit := EditExit;
    LastEdit := (Sender as TEdit);
  end;
end;

procedure TForm1.EditExit(Sender: TObject);
begin
  //Udfør din kode
  if Sender is TEdit then
  begin
    LastEdit := nil;
    (Sender as TEdit).OnExit := nil;
  end;
end;

Så er det bare at sætte alle dine edits til EditEnter, og så burde det vel egentlig køre... Jeg har ikke testet det, men tror at den er god nok!! ;)

//hermandsen
Avatar billede pzw Nybegynder
18. juni 2003 - 09:44 #4
Jeg har forsøgt med et eksempel (2 Edit felter med datavalidering og en Cancel button) på baggrund af din kode, men kan ikke få det til at fungere som det skal - jeg forstår det ikke helt.

Mit eksempel:
type
  TForm1 = class(TForm)
    btnCancel: TButton;
    Edit: TEdit;
    Edit2: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    procedure btnCancelClick(Sender: TObject);
    procedure EditEnter(Sender: TObject);
    procedure EditExit(Sender: TObject);
    procedure Edit2Enter(Sender: TObject);
    procedure Edit2Exit(Sender: TObject);

  private
    LastEdit: TEdit;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.EditExit(Sender: TObject);
begin
  If Edit.Text<>'1' Then
  Begin
      Edit.SetFocus;
      Showmessage('Du skal taste 1');
  End;
  //Udfør din kode
  if Sender is TEdit then
  begin
    LastEdit := nil;
    (Sender as TEdit).OnExit := nil;
  end;
end;

procedure TForm1.btnCancelClick(Sender: TObject);
begin
if LastEdit <> nil then
    LastEdit.OnExit := nil;
    Application.Terminate;
end;

procedure TForm1.EditEnter(Sender: TObject);
begin
if Sender is TEdit then
  begin
    (Sender as TEdit).OnExit := EditExit;
    LastEdit := (Sender as TEdit);
  end;
end;

procedure TForm1.Edit2Enter(Sender: TObject);
begin
if Sender is TEdit then
  begin
    (Sender as TEdit).OnExit := Edit2Exit;
    LastEdit := (Sender as TEdit);
  end;
end;

procedure TForm1.Edit2Exit(Sender: TObject);
begin
  If Edit2.Text<>'2' Then
  Begin
      Showmessage('Du skal taste 2');
      Edit2.SetFocus;
  End;
  //Udfør din kode
  if Sender is TEdit then
  begin
    LastEdit := nil;
    (Sender as TEdit).OnExit := nil;
  end;
end;

//PZ
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester