Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Probleme mit Panel (https://www.delphipraxis.net/162887-probleme-mit-panel.html)

Neuling13 8. Sep 2011 15:34

Probleme mit Panel
 
Hallo zusammen!

Ich habe eine Frage zum Thema Panel.
Ich stelle das Livebild einer Kamera auf einem Panel dar. Nun wollte ich die Mausposition auf dem Panel, also die zugehörigen Koordinaten des Mauspfeils anzeigen lassen und anschließend speichern, bis mir ein Problem auffiel.
Ich kann kein Ereignis mehr im Panel anwenden, weder ein OnCLick, MouseMove usw. bzw. anwenden schon, nur dabei passiert nichts. Da ich aber wie oben angedeutet die Position speichern will, wenn der Benutzer auf das Livebild klickt, wäre ich euch dankbar wenn ihr mir einen Tipp geben könntet.

Vielen Dank schon mal...

himitsu 8. Sep 2011 16:04

AW: Probleme mit Panel
 
Wie stellst du das Bild dar?

Vermutung: Es wird ein weiteres Anzeigecontrol in das Panel eingeblendet, welches die Mausereignisse empfängt.

Neuling13 8. Sep 2011 16:18

AW: Probleme mit Panel
 
Code:
const
  WM_CAP_DRIVER_CONNECT = WM_USER + 10;
  WM_CAP_EDIT_COPY = WM_USER + 30;
  WM_CAP_SET_PREVIEW = WM_USER + 50;
  WM_CAP_SET_OVERLAY = WM_USER + 51;
  WM_CAP_SET_PREVIEWRATE = WM_USER + 52;


implementation

function capCreateCaptureWindow(lpszWindowName: LPCSTR;
  dwStyle: DWORD;
  x, y,
  nWidth,
  nHeight: integer;
  hwndParent: HWND;
  nID: integer): HWND; stdcall;
  external 'AVICAP32.DLL' name 'capCreateCaptureWindowA';  
{------------------------------------------------------------------------------}

{$R *.DFM}

procedure TForm1.Bildzeigen;  
begin
  connect := capCreateCaptureWindow('Kamera',ws_child+ws_visible, 0,
  0, 600, 450, Panel1.Handle, 1);
  SendMessage(connect, WM_CAP_DRIVER_CONNECT, 0, 0);
  SendMessage(connect, WM_CAP_SET_PREVIEWRATE, 30, 0);
  sendMessage(connect, WM_CAP_SET_OVERLAY, 1, 0);
  SendMessage(connect, WM_CAP_SET_PREVIEW, 1, 0);
end;
Auf diese Weise wird das Bild/Handle in einem Panel dargestellt.
Habe noch zusätzliche Funktionen, wie Abspeichern der Bilder usw. aber daran sollte es nicht liegen.
Du meinst ein zusätzlich Anzeigecontrol könnte helfen? Aber mich würde es trotzdem interessieren, warum das Panel in diesem Fall Probleme macht.

TiGü 9. Sep 2011 05:42

AW: Probleme mit Panel
 
Zitat:

Zitat von Neuling13 (Beitrag 1122713)
Du meinst ein zusätzlich Anzeigecontrol könnte helfen? Aber mich würde es trotzdem interessieren, warum das Panel in diesem Fall Probleme macht.

Du hast nicht richtig verstanden!

Es WIRD durch die DLL-Funktion eine zusätzliche Anzeigekomponente auf dem Panel erzeugt.
Wenn die Anzeigekomponente ein Haus wäre, gibst du die Hausnummer (Panel.Handle) und die Ausmaße des Grundstücks an (x, y, nWidth, nHeight) an, auf dem gebaut werden soll.
Wenn du auf einen Panel einen Button legst und auf den Button, anstatt auf dem Panel drückst, wird ja auch das OnClick-Event des Buttons und nicht des Panels ausgelöst.

EWeiss 9. Sep 2011 06:34

AW: Probleme mit Panel
 
Weil dein Panel mit dem Aufruf CreateCaptureWindow zum Parent wird.
Delphi-Quellcode:
hwndParent: HWND;
Das übergibst du ja auch in dieser zeile.

Es liegt also hinter dem CaptureWindow ..

PS:
Das kannst du nur ändern wenn du anstelle von CreateCaptureWindow
eine möglichkeit hast auf ein DC zu zeichnen..

gruss

Bummi 9. Sep 2011 07:24

AW: Probleme mit Panel
 
Nicht schön, aber auf die Art könntest Du Dir was basteln .....

Delphi-Quellcode:
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
  var Handled: Boolean);
begin
   if (msg.hwnd=connect) and (msg.message = WM_MouseMove) then DeinCode

end;

Neuling13 11. Sep 2011 10:20

AW: Probleme mit Panel
 
Danke für die Antworten, werde das Einbinden der Cam evtl. anders lösen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:55 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