Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   beim wieder aktivieren klick auf Bild auslösen ? (https://www.delphipraxis.net/183934-beim-wieder-aktivieren-klick-auf-bild-ausloesen.html)

Gege 14. Feb 2015 17:47

beim wieder aktivieren klick auf Bild auslösen ?
 
Hallo Leute ..
mal kurze Erklärung ..

ich hab ein Form mit bsNone nur mit ein Bild drauf und das Form selbst durch Farbe transparent
.. sprich man sieht nur das Bild

das Programm schaut nun per Timer etwas nach .. und bei bestimmten Ereignis
bringt es sich selber in Vordergrund und bleibt auch im Vordergrund .. das Bild hat als Onclick eine Routine.
jetzt kommts ..
wenn jetzt der Benutzer etwas anderes am PC noch macht .. sozusagen die Application den Focus verliert
und der Benutzer jetzt auf das Bild klicken will um das onclick aus zu lösen
passiert erst mal nichts sondern erst beim 2. Klick da der erste Klick nur den Focus gibt.

Wie bekomme ich das hin, das gleich beim Focus übergeben das mit auszulösen ?
Timage hat kein OnActivate ?

evtl jemand eine Idee ?
Gege

mkinzler 14. Feb 2015 17:56

AW: beim wieder aktivieren klick auf Bild auslösen ?
 
Aber die Formularklasse oder die Application

Gege 14. Feb 2015 18:03

AW: beim wieder aktivieren klick auf Bild auslösen ?
 
da hab ich es schon versuchsweise rein gepackt
aber die wird nicht ausgelöst .
ich denke weil das Bild angeklickt wird und nicht das Form ..

Gege 14. Feb 2015 19:23

AW: beim wieder aktivieren klick auf Bild auslösen ?
 
wie komm ich eigentlich zum event von der application .. hattest Du ja auch erwähnt ..? hmm
hab da gerade eine Denklücke

mkinzler 14. Feb 2015 19:48

AW: beim wieder aktivieren klick auf Bild auslösen ?
 
Du musst das im Code setzen:
Delphi-Quellcode:
Application.onActivate := <Eventmethode>; //TNotifyEvent

himitsu 14. Feb 2015 20:04

AW: beim wieder aktivieren klick auf Bild auslösen ?
 
Oder das OnActivate der Form?

Zitat:

Zitat von mkinzler (Beitrag 1289909)
Du musst das im Code setzen:
Delphi-Quellcode:
Application.onActivate := <Eventmethode>; //TNotifyEvent

In ein klein bissl neueren Delphis nimmt man natürlich Delphi-Referenz durchsuchenTApplicationEvents.

Gege 14. Feb 2015 23:44

AW: beim wieder aktivieren klick auf Bild auslösen ?
 
vielen Dank soweit für Eure Hinweise
ich bin dadurch auch schon ein Schritt weiter ..
aber irgendwie löst es mir das Event schon nur beim drüber gehen mit Maus aus ..

so wie ein MouseOver im WEB ..

hab ich da was falsch ? .. ich hatte mich dann nach weiten suchen an den post etwas orientiert..
und hab nur das
Code:
OnActivate:=ApplicationActivate;
genommen..
und dann
Code:
procedure Tform1.ApplicationActivate(Sender: TObject);
aber so richtig ist da die Anwendung da ja noch nicht aktiv ..
aktiv wird sie ja erst beim drauf klicken ..

@himitsu das Form OnActivate hab ich schon probiert ..
da kommt er nicht rein ..
ich denk weil es eigentlich auch nicht zu sehen ist(transparent)
und wird deswegen ja auch nicht aktiviert..

himitsu 15. Feb 2015 09:26

AW: beim wieder aktivieren klick auf Bild auslösen ?
 
Zitat:

Zitat von Gege (Beitrag 1289919)
@himitsu das Form OnActivate hab ich schon probiert ..
da kommt er nicht rein ..
ich denk weil es eigentlich auch nicht zu sehen ist(transparent)
und wird deswegen ja auch nicht aktiviert..

Nee, ich denk dann eher, daß dieses Form.OnActivate wohl doch nur beim Fokuswechsel der Fenster innerhalb der Anwendung aufgerufen wird.

Wenn ich bei einer nicht-aktiven Anwendung auf ein TImage klicke, dann kommen bei mir diese Ereignisse rein:
Image1.OnMouseActivate // k.A. seit wann es Diese gibt -> WM_MOUSEACTIVATE CM_MOUSEACTIVATE
Form.OnMouseActivate
ApplicationEvents1.OnActivate
Image1.OnClick

Also OnClick wird ebenfalls aufgerufen.
Wenn das bei dir nicht ist, dann muß sich irgendwas verändert haben, entweder durch dich oder in der VCL, gegenüber einer ganz stinknormalen Standardanwendung (XE3/XE7).

Und bei Allem, was nicht Standard ist, da kommt man ohne eine reproduzierbares Testszenario oder eine Testanwendung nicht umher.

TestCode:
Delphi-Quellcode:
procedure TForm24.ApplicationEvents1Activate(Sender: TObject);
begin
  Memo1.Lines.Add('ApplicationEvents1.OnActivate');
end;

procedure TForm24.ApplicationEvents1Deactivate(Sender: TObject);
begin
  Memo1.Lines.Add('ApplicationEvents1.OnDeactivate');
end;

procedure TForm24.FormActivate(Sender: TObject);
begin
  Memo1.Lines.Add('Form.OnActivate');
end;

procedure TForm24.FormClick(Sender: TObject);
begin
  Memo1.Lines.Add('Form.OnClick');
end;

procedure TForm24.FormMouseActivate(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y, HitTest: Integer;
  var MouseActivate: TMouseActivate);
begin
  Memo1.Lines.Add('Form.OnMouseActivate');
end;

procedure TForm24.FormMouseEnter(Sender: TObject);
begin
  //Memo1.Lines.Add('Form.OnMouseEnter');
end;

procedure TForm24.FormMouseLeave(Sender: TObject);
begin
  //Memo1.Lines.Add('Form.OnMouseLeave');
end;

procedure TForm24.Image1Click(Sender: TObject);
begin
  Memo1.Lines.Add('Image1.OnClick');
end;

procedure TForm24.Image1MouseActivate(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y, HitTest: Integer;
  var MouseActivate: TMouseActivate);
begin
  Memo1.Lines.Add('Image1.OnMouseActivate');
end;

procedure TForm24.Image1MouseEnter(Sender: TObject);
begin
  //Memo1.Lines.Add('Image1.OnMouseEnter');
end;

procedure TForm24.Image1MouseLeave(Sender: TObject);
begin
  //Memo1.Lines.Add('Image1.OnMouseLeave');
end;

Gege 15. Feb 2015 10:17

AW: beim wieder aktivieren klick auf Bild auslösen ?
 
aaarg ich hab den Fehler gefunden .. :(

das ist in meiner TForm1.Image1MouseMove procedure

um das Form zu verschieben (BILD ohne Form) hab ich da drinnen
Code:
  ReleaseCapture;
  Form1.Perform(WM_SYSCOMMAND, $F012, 0);
hmmm und das wirft alles etwas ducheinander ..

sonst klappt das auch mit den application.onactivate

wie löse ich das denn jetzt nur das als combi .. *grübel*

hathor 15. Feb 2015 10:28

AW: beim wieder aktivieren klick auf Bild auslösen ?
 
Liste der Anhänge anzeigen (Anzahl: 2)
Mit einer Maus-Bewegung das Fenster zu aktivieren ist einfach:

Delphi-Quellcode:
procedure TForm1.Image1MouseEnter(Sender: TObject);
begin
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:06 Uhr.
Seite 1 von 2  1 2      

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