AGB  ·  Datenschutz  ·  Impressum  







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

Komponente gesucht

Ein Thema von papabaer · begonnen am 29. Dez 2006 · letzter Beitrag vom 30. Dez 2006
Antwort Antwort
papabaer

Registriert seit: 24. Okt 2006
11 Beiträge
 
#1

Komponente gesucht

  Alt 29. Dez 2006, 22:25
Ich hab ein Problem mit dem Ausblenden einer Komponente... und bin aber nicht ganz sicher, ob es in diesem Forum richtig ist.

Ich habe ein etwas komplexeres Programm geschrieben, in dem auch zur Laufzeit Komponenten erstellt werden. Bestimmte Komponenten sind in einzelnen Programmteilen nicht sichtbar. Nun passiert es mir aber, dass ich in einem Programmteil in einem Bereich "etwas" anklicken kann, von dem ich aber nicht feststellen kann, was es eigentlich ist. Normalerweise dürfte dort nichts liegen ..., d. h. ich müsste dort nachbessern.

Daher meine Frage: Gibt es eine Möglichkeit, pauschal den Namen einer angeklickten Komponente zu erhalten, d. h. ich klicke irgendwo drauf und er zeigt mir (z. B. in einem Edit-Feld) den Namen der Komponente an.
  Mit Zitat antworten Zitat
Benutzerbild von TwoFace
TwoFace

Registriert seit: 21. Jun 2003
Ort: Uffenheim
26 Beiträge
 
#2

Re: Komponente gesucht

  Alt 29. Dez 2006, 22:28
Servus

Gugg mal hier hin: Einer zur Laufzeit erzeugten Komponente ein Ereignis zuweisen

Greetz
  Mit Zitat antworten Zitat
papabaer

Registriert seit: 24. Okt 2006
11 Beiträge
 
#3

Re: Komponente gesucht

  Alt 30. Dez 2006, 00:05
Ja, aber das ist nicht mein Problem. Ich kann diese (unbekannte) Komponente anklicken - es gibt sogar eine Fehlermeldung (Fehler in Modul... usw.) - aber ich will ja wissen, welche Komponente es war ... und das möglichst ohne (per Hand) allen nochmal zu sagen, dass sie sich anzeigen sollen.

Ich bräuchte also etwas, was universell abfängt und mir dann sagt, wer das Ereignis verarbeiten soll.
  Mit Zitat antworten Zitat
Benutzerbild von rey003
rey003

Registriert seit: 31. Aug 2005
Ort: Sachsen ;-)
46 Beiträge
 
Delphi 2006 Architect
 
#4

Re: Komponente gesucht

  Alt 30. Dez 2006, 00:25
Also wenn ich das richtig verstanden hab willst du zur Laufzeit gucken welche Komponente das ist?
Dann versuch mal solche Programm wie X-Spy oder WinSpy (von Luckie)!
Die zeigen dir an welche Komponente unter der Maus ist! (mit Handle, Namen und so weiter)
Hoffe das hilft dir!
Daniel S.
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#5

Re: Komponente gesucht

  Alt 30. Dez 2006, 02:40
Hi!

Könntest du den Titel deines Beitrages noch ein wenig anpassen? So ganz kann man nicht auf das Thema schließen.
Vielleicht wäre z.B. "Komponente unter Mauszeiger ermitteln" besser....


Ciao, Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.197 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: Komponente gesucht

  Alt 30. Dez 2006, 07:04
In der Jedi Code Library gibt es eine Unit mit der man den Aufrufstack einfach bestimmen kann und z.b. in ein Logdatei schreiben kannst. Über denn Aufrufstack bekommst Du dann mit wo und woher der Fehler stammt.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#7

Re: Komponente gesucht

  Alt 30. Dez 2006, 11:24
Hallo papabaer,

vielleicht hilft dir dieser Vorschlag: ziehe eine TApplicationEvents-Komponente (Registerkarte "Zusätzlich") auf dein Hauptformular und weise ihrem OnMessage-Ereignis die folgende Behandlungsroutine zu:

Delphi-Quellcode:
procedure TForm1.ApplicationEvents1Message (var Msg: tagMSG; var Handled: Boolean);
var
  WinControl : TWinControl;
  Control : TControl;
begin
  if (Msg.message = WM_MOUSEMOVE) then
    begin
      WinControl := FindVCLWindow(Msg.pt);
      if (WinControl = nil) then
        Caption := ''
      else
        begin
          Control := WinControl.ControlAtPos(WinControl.ScreenToClient(Msg.pt), True);
          if (Control = nil) then
            Control := WinControl;
          Caption := Format('%s (name="%s")', [Control.ClassName, Control.Name]);
        end;
    end;
end;
Wenn du nun dein Programm startest und mit dem Mauszeiger über die Controls fährst, werden in der Titelzeile des Hauptformulars Klassenname und Name des Controls unter dem Mauszeiger angezeigt. Möglicherweise entdeckst du ja so das gesuchte Element.

Nach dem Abschluß deiner Untersuchungen solltest du den Code wieder aus dem Programm entfernen. Alle Nachrichten durchlaufen die Routine und bremsen somit die Applikation unnötig aus.

Gruß Hawkeye
  Mit Zitat antworten Zitat
papabaer

Registriert seit: 24. Okt 2006
11 Beiträge
 
#8

Re: Komponente gesucht

  Alt 30. Dez 2006, 13:44
Danke, das hat geholfen ... und ich habe meinen Fehler gefunden ... hatte letztlich irgendwo eine Schleife von 1 bis ... statt von 0 bis ... laufen lassen.

Einen guten Rutsch an alle
  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 08:30 Uhr.
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