AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Eingaben mitloggen

Ein Thema von matashen · begonnen am 18. Okt 2017 · letzter Beitrag vom 18. Okt 2017
Antwort Antwort
4dk2

Registriert seit: 4. Sep 2007
176 Beiträge
 
#1

AW: Eingaben mitloggen

  Alt 18. Okt 2017, 13:28
ich würde als erste JV empfehlen
(...jcl git\jcl\experts\repository\ExceptionDialog\Standar dDialogs\ExceptDlg.pas)
wenn der in projekt eingebunden ist, meldet der den Fehler und Aufrufstack.
du solltest aber dann Projekt-> JCL Debug Expert -> Generate und Insert aktivieren und -> .Map Datei löschen aktivieren,
Bzw dann auch testen einmal ob eine Exception angezeigt wird und der richtige Stack.

Der Aufrufstack sollte eigendlich zu 99% der Fehler führen.

Aber du kannst auch einfach eine Protokollierung der Controls für deine Anwendung erstellen.
Delphi-Quellcode:
type
  TForm2 = class(TForm)
    tmr1: TTimer;
    mmo1: TMemo;
    edt1: TEdit;
    btn1: TButton;
    procedure tmr1Timer(Sender: TObject);
    procedure FormShow(Sender: TObject);
  private
    FLastForm:TForm;
    FLastControl:TControl;
  protected
    procedure WndProc(var Message: TMessage); override;

    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

uses Unit3;

procedure TForm2.FormShow(Sender: TObject);
begin
  Form3.show;
end;



procedure TForm2.tmr1Timer(Sender: TObject);
var CurForm:TForm;
    CurControl:TControl;
begin
  if tmr1.Tag<>0 then exit;
  tmr1.Tag:=1;

  //logging über Screen...

  CurForm:=Screen.ActiveForm;
  CurControl:=Screen.ActiveControl;

  if CurForm<>FLastForm then
  begin
    mmo1.Lines.Add(CurForm.ToString()+'.'+CurForm.Name);
    FLastForm:=CurForm;
  end;
  if CurControl<>FLastControl then
  begin
    mmo1.Lines.Add(CurControl.ToString()+'.'+CurControl.Name);
    FLastControl:=CurControl;
    if CurControl is TButton then
    begin
      //noch irgendwas ?
    end;
  end;


  tmr1.Tag:=0;
end;

procedure TForm2.WndProc(var Message: TMessage);
var
  MausPos: TPoint;
  control: TControl;
begin
  //logging über die Messages...
  //aus http://www.delphipraxis.net/45239-wndproc-funktioniert-nicht-mit-buttons-auf-formular.html
  If (Message.Msg = WM_LBUTTONDOWN) or
     ((Message.Msg = WM_PARENTNOTIFY)
     and (Message.wParam = WM_LBUTTONDOWN)) then begin
    GetCursorPos(MausPos);
    MausPos := ScreenToClient(MausPos);
    control := self.ControlAtPos(MausPos, false, true);
    //oder
    control := screen.ActiveControl;

    if control = nil then
      mmo1.Lines.Add('WndProc: WM_LBUTTONDOWN --- nil ---')
    else
      mmo1.Lines.Add('WndProc: WM_LBUTTONDOWN --- '+control.name+' ---')
  end;
  inherited WndProc(Message);
end;
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:25 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz