Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   ButtonClick wird nicht ausgeführt (https://www.delphipraxis.net/170233-buttonclick-wird-nicht-ausgefuehrt.html)

Ykcim 6. Sep 2012 13:19

ButtonClick wird nicht ausgeführt
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Zusammen,

ich arbeite mit Delphi xe2 Starter und habe ein Phänomen, dass ich mir nicht erklären kann und was ganz schön nervig ist.

Vereinzeln führen Buttons ihre ButtonClick Proceduren nicht mehr aus. Ich habe keine Ahnung, woran das liegen könnte...

Anbei mal ein Screenshot, dass die Procedure dem Button zugewiesen ist und die Procedure (ich habe jetzt, nachdem die alte Procudure nicht mehr funktionierte eine einfache genommen).
Delphi-Quellcode:
procedure TWSAgenda.ButtonZeitraumBearbeitenClick(Sender: TObject);
begin
  Showmessage('Hallo');
end;
Hat jemand einen Idee?

Vielen Dank
Ykcim

Jonas Shinaniganz 6. Sep 2012 13:54

AW: ButtonClick wird nicht ausgeführt
 
Das was du hier gepostet hast sieht richtig aus...

Hast du mal einen Haltepunkt in die
Zitat:

Showmessage('Hallo');
Zeile gesetzt und den Button zur Laufzeit betätigt?

Ykcim 6. Sep 2012 14:08

AW: ButtonClick wird nicht ausgeführt
 
Ja, habe ich gemacht. Wenn ich auf den Button klicke, verfärbt ersich, wie es alle Buttons machen, die man klickt, aber er läuft nicht in die Procedur rein. Es ist so, als gäbe es die Procedur gar nicht.

Ich habe schon an einen Fehler in Delphi xe2 gedacht und das ganze System heute Morgen neu aufgesetzt... Aber leider ohne Erfolg...

DeddyH 6. Sep 2012 14:18

AW: ButtonClick wird nicht ausgeführt
 
Wird evtl. irgendwo im Code der Eventhandler neu gesetzt?

Ykcim 6. Sep 2012 14:38

AW: ButtonClick wird nicht ausgeführt
 
Nicht das ich das bewusst gemacht hätte...

Anbei der gesamte Code dieser Unit:
Delphi-Quellcode:
unit UnitAgenda;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes,
  Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Grids, Vcl.ExtCtrls,
  Vcl.Menus, Vcl.StdCtrls, Planner, AdvObj, BaseGrid, AdvGrid, Vcl.ImgList,
  W7Classes, W7Buttons, Vcl.Buttons, Codes;

type
  TWSAgenda = class(TFrame)
    PanelAgenda: TPanel;
    PanelZeitraum: TPanel;
    PanelAgendaListe: TPanel;
    Panel3: TPanel;
    Splitter3: TSplitter;
    Splitter4: TSplitter;
    PopupZeitraum: TPopupMenu;
    PopupAgenda: TPopupMenu;
    bearbeiten1: TMenuItem;
    N1: TMenuItem;
    Zeitraumhinzufgen1: TMenuItem;
    Zeitraumlschen1: TMenuItem;
    bearbeiten2: TMenuItem;
    N2: TMenuItem;
    AgendaPunkthinzufgen1: TMenuItem;
    AgendaPunktlschen1: TMenuItem;
    Panel1: TPanel;
    Panel2: TPanel;
    PanelZiele: TPanel;
    Planner1: TPlanner;
    GridZeitraum: TAdvStringGrid;
    GridZiele: TAdvStringGrid;
    ImageList1: TImageList;
    ButtonAgendaBearbeiten: TSpeedButton;
    ButtonAgendaLoeschen: TSpeedButton;
    ButtonAgendaNeu: TSpeedButton;
    Panel7: TPanel;
    Splitter5: TSplitter;
    Splitter6: TSplitter;
    Panel6: TPanel;
    Splitter1: TSplitter;
    Splitter2: TSplitter;
    ButtonZeitraumBearbeiten: TSpeedButton;
    ButtonZeitraumNeu: TSpeedButton;
    ButtonZeitraumLoeschen: TSpeedButton;
    ButtonZieleBearbeiten: TSpeedButton;
    ButtonZieleNeu: TSpeedButton;
    ButtonZieleLoeschen: TSpeedButton;
    procedure FrameResize(Sender: TObject);
    procedure Planner1ItemDelete(Sender: TObject; Item: TPlannerItem);
    procedure Planner1ItemInsert(Sender: TObject; Position, FromSel,
      FromSelPrecise, ToSel, ToSelPrecise: Integer);
    procedure ButtonAgendaLoeschenClick(Sender: TObject);
    procedure ButtonAGendaBearbeitenClick(Sender: TObject);
    procedure ButtonAgendaNeuClick(Sender: TObject);
    procedure ButtonZeitraumLoeschenClick(Sender: TObject);
    procedure ButtonZeitraumBearbeitenClick(Sender: TObject);
    procedure ButtonZieleBearbeitenClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

implementation

{$R *.dfm}

procedure TWSAgenda.FrameResize(Sender: TObject);
begin

  ImageList1.GetBitmap(64, ButtonZeitraumBearbeiten.Glyph);
  ImageList1.GetBitmap(18, ButtonZeitraumNeu.Glyph);
  ImageList1.GetBitmap(5, ButtonZeitraumLoeschen.Glyph);

  ImageList1.GetBitmap(64, ButtonZieleBearbeiten.Glyph);
  ImageList1.GetBitmap(18, ButtonZieleNeu.Glyph);
  ImageList1.GetBitmap(5, ButtonZieleLoeschen.Glyph);

  ImageList1.GetBitmap(64, ButtonAgendaBearbeiten.Glyph);
  ImageList1.GetBitmap(18, ButtonAgendaNeu.Glyph);
  ImageList1.GetBitmap(5, ButtonAgendaLoeschen.Glyph);

  Panel1.Height:=round(PanelAgenda.Height*0.21);
  PanelZeitraum.Width:=round(PanelAgenda.Width*0.45);
    GridZeitraum.ColWidths[0]:=25;
    GridZeitraum.ColWidths[1]:=round((GridZeitraum.Width)*0.20);
    GridZeitraum.ColWidths[2]:=round((GridZeitraum.Width)*0.20);
    GridZeitraum.ColWidths[3]:=round((GridZeitraum.Width)*0.41);
    GridZeitraum.ColWidths[4]:=(GridZeitraum.Width-GridZeitraum.ColWidths[0]-
                            GridZeitraum.ColWidths[1]-GridZeitraum.ColWidths[2])-
                            GridZeitraum.ColWidths[3]-25;

  //PanelZiele
    GridZiele.ColWidths[0]:=25;
    GridZiele.ColWidths[2]:=40;
    GridZiele.ColWidths[1]:=Gridziele.Width-GridZiele.ColWidths[0]-
                                            GridZiele.ColWidths[2]-25;

  //Übershriften
  //Zeitraum
  GridZeitraum.Cells[0,0]:='Nr';
  GridZeitraum.Cells[1,0]:='Von';
  GridZeitraum.Cells[2,0]:='Bis';
  GridZeitraum.Cells[3,0]:='Ort';
  GridZeitraum.Cells[4,0]:='KW';

  GridZiele.Cells[0,0]:='Nr';
  GridZiele.Cells[1,0]:='Ziel';
  GridZiele.Cells[2,0]:='Status';

end;

procedure TWSAgenda.Planner1ItemDelete(Sender: TObject; Item: TPlannerItem);
begin
  Planner1.FreeItem(Item);
end;

procedure TWSAgenda.Planner1ItemInsert(Sender: TObject; Position, FromSel,
  FromSelPrecise, ToSel, ToSelPrecise: Integer);
begin
  with Planner1.CreateItemAtSelection do
    begin
      Text.Text:='Item created at runtime on '+Formatdatetime('hh:nn dd/mm/yyyy',Now);
      Update;
    end;
end;

procedure TWSAgenda.ButtonAGendaBearbeitenClick(Sender: TObject);
begin
  if ButtonAgendaBearbeiten.Caption='Bearbeiten' then
    begin
      ButtonAgendaBearbeiten.Caption:='Speichern';
      ButtonAgendaBearbeiten.Glyph:=nil;
      ImageList1.GetBitmap(29, ButtonAgendaBearbeiten.Glyph);
      ButtonAgendaNeu.Visible:=true;
      ButtonAgendaLoeschen.Visible:=true;
    end
  else
    begin
      ButtonAgendaBearbeiten.Caption:='Bearbeiten';
      ButtonAgendaBearbeiten.Glyph:=nil;
      ImageList1.GetBitmap(64, ButtonAgendaBearbeiten.Glyph);
      ButtonAgendaNeu.Visible:=false;
      ButtonAgendaLoeschen.Visible:=false;
    end;
end;

procedure TWSAgenda.ButtonAgendaLoeschenClick(Sender: TObject);
begin
  PostKeyEx32(VK_delete, [], False);
end;

procedure TWSAgenda.ButtonAgendaNeuClick(Sender: TObject);
begin
  PostKeyEx32(VK_insert, [], False);
end;


procedure TWSAgenda.ButtonZeitraumBearbeitenClick(Sender: TObject);
begin
  if ButtonZeitraumBearbeiten.Caption='Bearbeiten' then
    begin
      ButtonZeitraumBearbeiten.Glyph:=nil;
      ImageList1.GetBitmap(29, ButtonZeitraumBearbeiten.Glyph);
      ButtonZeitraumBearbeiten.Caption:='Speichern';
      ButtonZeitraumNeu.Visible:=true;
      ButtonZeitraumLoeschen.Visible:=true;
    end
  else
    begin
      ButtonZeitraumBearbeiten.Caption:='Bearbeiten';
      ButtonZeitraumBearbeiten.Glyph:=nil;
      ImageList1.GetBitmap(64, ButtonZeitraumBearbeiten.Glyph);
      ButtonZeitraumNeu.Visible:=false;
      ButtonZeitraumLoeschen.Visible:=false;
    end;
end;

procedure TWSAgenda.ButtonZeitraumLoeschenClick(Sender: TObject);
begin
  showmessage(inttostr(Panel3.Font.Size)+','+inttostr(Panel6.font.Size));
end;

procedure TWSAgenda.ButtonZieleBearbeitenClick(Sender: TObject);
begin
  if ButtonZieleBearbeiten.Caption='Bearbeiten' then
    begin
      ButtonZieleBearbeiten.Caption:='Speichern';
      ButtonZieleBearbeiten.Glyph:=nil;
      ImageList1.GetBitmap(29, ButtonZieleBearbeiten.Glyph);
      ButtonZieleNeu.Visible:=true;
      ButtonZieleLoeschen.Visible:=true;
    end
  else
    begin
      ButtonZieleBearbeiten.Caption:='Bearbeiten';
      ButtonZieleBearbeiten.Glyph:=nil;
      ImageList1.GetBitmap(64, ButtonZieleBearbeiten.Glyph);
      ButtonZieleNeu.Visible:=false;
      ButtonZieleLoeschen.Visible:=false;
    end;
end;

end.
Die drittletzte Procedure (ButtonZeitraumBearbeitenClick) und die letzte (ButtonZieleBearbeitenClick) funktionieren nicht mehr... Die gleiche Procedure wird noch an einer anderen Stellen ausgeführt (ButtonAGendaBearbeitenClick), bei der einen klappt es und bei den zweien nicht mehr... Gestern Abend klappte es noch und heute morgen habe ich nur neu compiliert und dann reagierten die Buttons nicht mehr...
Die Procedure soll eigentlich nur zwei Speedbuttons sicht bzw. unsichtbar machen und die Icons auf den Speedbutton steuern...

mkinzler 6. Sep 2012 14:39

AW: ButtonClick wird nicht ausgeführt
 
Funktioniert den irgendein Event bei diesen Buttons? Sind diese aktiv?

hathor 6. Sep 2012 14:40

AW: ButtonClick wird nicht ausgeführt
 
Wie gross ist die CPU-Last?

DeddyH 6. Sep 2012 14:42

AW: ButtonClick wird nicht ausgeführt
 
D.h. wenn Du einen Haltepunkt in die jeweils erste Zeile der Methode setzt, wird dieser nicht angesprungen? Übrigens ist es eher suboptimal, die Caption eines Buttons abzufragen und entsprechend zu reagieren, Du verlagerst damit die Logik in die Darstellung.

zyklame 6. Sep 2012 14:46

AW: ButtonClick wird nicht ausgeführt
 
Geh doch mal im Objektinspektor auf Ereignisse und guck dort ob unter OnClick deine procedure eingetragen ist.

DeddyH 6. Sep 2012 14:48

AW: ButtonClick wird nicht ausgeführt
 
Laut Screenshot im Ausgangspost ist das der Fall, sonst wäre das auch mein erster Verdacht gewesen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:07 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz