AGB  ·  Datenschutz  ·  Impressum  







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

Handle eines bestimmten Panels

Ein Thema von Praktikant · begonnen am 15. Jan 2004 · letzter Beitrag vom 15. Jan 2004
Antwort Antwort
Seite 1 von 2  1 2      
Praktikant

Registriert seit: 24. Sep 2003
131 Beiträge
 
Delphi 5 Enterprise
 
#1

Handle eines bestimmten Panels

  Alt 15. Jan 2004, 12:08
Und zwar will ich auf einen Button der auf einem Panel liegt zugreifen.
Das Panel trägt den Name=PanelHauptfenster und hat caption=''.
Tja, nur irgendwie klappt es nicht dass ich die Handleadresse vom Panel rausfinde.

Hab's so probiert:
Delphi-Quellcode:
 
   hPanel:=0;
   while hPanel = 0 do
      hPanel := FindWindowEx(FHauptmenuHwnd,PanelHauptfensterHwnd,NIL,NIL);
   PanelHauptfensterHwnd := hPanel;
   showmessage('Panelhandle gefunden');
Aber auch mit hPanel := FindWindow('PanelHauptfenster',Nil); klappt's nicht.

Wo ist mein Denkfehler?
FHauptmenuHwnd ist das Handle des Hauptformulares auf dem das Panel liegt.
  Mit Zitat antworten Zitat
Benutzerbild von p0ke
p0ke

Registriert seit: 21. Dez 2003
Ort: Osnabrück
121 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Handle eines bestimmten Panels

  Alt 15. Jan 2004, 12:18
Würde dir das nicht reichen:

Button1.handle;
René
There are only 10 types of people in the world: Those who understand binary, and those who don't.

Mein Projekt bei DP: ScreenCaptureV2
  Mit Zitat antworten Zitat
Praktikant

Registriert seit: 24. Sep 2003
131 Beiträge
 
Delphi 5 Enterprise
 
#3

Re: Handle eines bestimmten Panels

  Alt 15. Jan 2004, 12:23
nö, da sich der button nicht in dem selben programm befindet.

edit:
Fehler gefunden! Das THandle 'PanelHauptfensterHwnd' muss public sein und nicht private

Aber jetzt hängt's am klicken des buttons:
Delphi-Quellcode:
  if ButtonKommNeuWertHwnd <> 0 then
    SendMEssage(ButtonKommNeuWertHwnd,BM_CLICK,0,0);
  Mit Zitat antworten Zitat
Praktikant

Registriert seit: 24. Sep 2003
131 Beiträge
 
Delphi 5 Enterprise
 
#4

Re: Handle eines bestimmten Panels

  Alt 15. Jan 2004, 13:36
häh, check nix mehr

Da ja das click nicht ausgeführt wird hab ich ma rumprobiert. Dass die panelhandle nicht gefunden wurde lieftg gar nicht daran dass es als private deklariert ist. Nun geht's nämlich auch dann

Wieso spinnt das herum?!
Und warum wird das click nicht ausgeführt
  Mit Zitat antworten Zitat
Praktikant

Registriert seit: 24. Sep 2003
131 Beiträge
 
Delphi 5 Enterprise
 
#5

Re: Handle eines bestimmten Panels

  Alt 15. Jan 2004, 13:55
ok, jetzt weiß ich wenigstens warum das click nicht ging:
Der Button war nicht sichtbar, dann führt er den klick auch nicht aus.

Das is schlecht, wer hat einen Vorschlag wie ich nun eine procedure starten kann ohne dass ich ein sichtbaren button o.ä. klicke. Muß nämlich warten bis anderes Programm bestimmte Aktionen ausgeführt hat.
Wenn das soweit ist dann soll das andere Prog eine procedure durchlaufen.

Kann ich mit handles direkt auf eine procedure zugreifen?

Sind ja beides meine selbstgeschriebenen Programme, von daher wäre es nicht das Prob.


help
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Handle eines bestimmten Panels

  Alt 15. Jan 2004, 14:21
Ach so, das sind auch noch beides deine Programme? Dann lass das eine Programm auf eine selbst definierte Message von dem anderen warten und wenn die gekommen ist, führst du die Prozedur aus.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Praktikant

Registriert seit: 24. Sep 2003
131 Beiträge
 
Delphi 5 Enterprise
 
#7

Re: Handle eines bestimmten Panels

  Alt 15. Jan 2004, 14:30
ähm... könntest erläutern wie das aussehen muß
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Handle eines bestimmten Panels

  Alt 15. Jan 2004, 14:51
So:
Empfänger
Delphi-Quellcode:
const
  MY_MESSAGE = WM_USER+1974;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
    procedure ReceiveMyMsg(var msg: TMessage); message MY_MESSAGE;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.ReceiveMyMsg(var msg: TMessage);
begin
  ShowMessage('Angekommen.');
end;
Sender:
Delphi-Quellcode:
const
  MY_MESSAGE = WM_USER+1974;

procedure TForm1.Button1Click(Sender: TObject);
var
  hWnd: THandle;
begin
  hWnd := FindWindow(nil, 'Form1');
  if hWnd <> 0 then
    SendMessage(hWnd, MY_MESSAGE, 0, 0)
  else
    RaiseLastOSError();
end;

Hier:
procedure ReceiveMyMsg(var msg: TMessage); message MY_MESSAGE; sagst du ihm auf welche Nachricht er warten / reagieren soll.

Hier:
Delphi-Quellcode:
procedure TForm1.ReceiveMyMsg(var msg: TMessage);
begin
  ShowMessage('Angekommen.');
end;
die dazugehörige Prozedur.

Und hier:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  hWnd: THandle;
begin
  hWnd := FindWindow(nil, 'Form1');
  if hWnd <> 0 then
    SendMessage(hWnd, MY_MESSAGE, 0, 0)
  else
    RaiseLastOSError();
end;
Schickst du die Nachricht an dein Fenster. Über die Parameter kannst du sogar noch Infos mitgeben.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Praktikant

Registriert seit: 24. Sep 2003
131 Beiträge
 
Delphi 5 Enterprise
 
#9

Re: Handle eines bestimmten Panels

  Alt 15. Jan 2004, 15:00
super, tausend dank

jetzt kann's gleich losgehen:


Ach ja, eine Frage noch:
Welche Funktion hat das
Delphi-Quellcode:
else
  RaiseLastOSError();
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#10

Re: Handle eines bestimmten Panels

  Alt 15. Jan 2004, 15:02
Steht in der Hilfe. Gibt das Ergebnis von GetLastError im Klartext aus, damit di siehst, was schiefgegangen ist.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 18:11 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