AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Types of actual and formal var parame
Thema durchsuchen
Ansicht
Themen-Optionen

Types of actual and formal var parame

Ein Thema von taktaky · begonnen am 27. Sep 2007 · letzter Beitrag vom 29. Sep 2007
Antwort Antwort
Seite 1 von 2  1 2      
taktaky
(Gast)

n/a Beiträge
 
#1

Types of actual and formal var parame

  Alt 27. Sep 2007, 14:10
Hallo,

Was ist falsch hier :
Delphi-Quellcode:
begin
  if Msg.Msg = WM_LButtonDown then ToggleCursor // Reaktion von LeftButtonDown
                                                 // soll verändert werden

                              else Bevel1OrgWinProc(Msg.Msg); // Zeile 42
end;
ich bekomme diese Meldung :
[Error] Unit1.pas(42): Types of actual and formal var parameters must be identical
  Mit Zitat antworten Zitat
Benutzerbild von peschai
peschai

Registriert seit: 15. Feb 2004
Ort: Göppingen
270 Beiträge
 
Delphi XE5 Professional
 
#2

Re: Types of actual and formal var parame

  Alt 27. Sep 2007, 14:14
Hallo

Zitat:
if Msg.Msg = WM_LButtonDown then ToggleCursor // Reaktion von LeftButtonDown
// soll verändert werden

else Bevel1OrgWinProc(Msg.Msg);
end;
Könnte es sein, daß es mit "Bevel1OrgWinProc(Msg);" funktioniert ?
Peter Schaible
  Mit Zitat antworten Zitat
taktaky
(Gast)

n/a Beiträge
 
#3

Re: Types of actual and formal var parame

  Alt 27. Sep 2007, 20:38
mit nur msg statt msg.msg kann zwar das Projekt kompilieren (Ohne Fehler oder Warnung)
aber der Cursor wird nicht ausgeblendet

Der Code soll den Cursor durch Klick auf Bevel ausblenden :
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls,ShellAPI;

type
  TForm1 = class(TForm)
    Bevel1: TBevel;
    procedure FormCreate(Sender: TObject);

  private
    procedure myBevel1WinProc(var Msg:TMessage);
 
  public
    end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

var Bevel1OrgWinProc : TWndMethod;

procedure TForm1.myBevel1WinProc(var Msg:TMessage);
 
  procedure ToggleCursor;
  begin
     if Bevel1.Cursor=crDefault then Bevel1.Cursor:=crNone
                                else Bevel1.Cursor:=crDefault;
  end;
   
begin
  if Msg.Msg = WM_LButtonDown then ToggleCursor // Reaktion von LeftButtonDown
                                                 // soll verändert werden

                              else Bevel1OrgWinProc(Msg); // sonst Original aufrufen
end;

procedure TForm1.FormCreate(Sender:TObject);
begin
  Bevel1OrgWinProc :=Bevel1.WindowProc; // Originaladresse merken
  Bevel1.WindowProc:=myBevel1WinProc; // deine eigene Fensterprozedur "einklinken"
end;

end.


________
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#4

Re: Types of actual and formal var parame

  Alt 27. Sep 2007, 21:16
Screen.Cursor := crNone
  Mit Zitat antworten Zitat
Benutzerbild von Mackhack
Mackhack

Registriert seit: 29. Nov 2003
Ort: San Diego, CA/USA
1.446 Beiträge
 
Delphi 2006 Architect
 
#5

Re: Types of actual and formal var parame

  Alt 27. Sep 2007, 22:03
//off topic on

Hi taktaky,

wie ich sehe hat unsere Schelte hier dir tatsaechlich die Augen geoeffnet und du faengst an selbst zu coden und zu sehen dass alles machbar ist!

Von mir: und weiter so!

//off topic off
Um etwas Neues zu schaffen muss man seine Ohren vor den Nein-sagern verschliessen um seinen Geist öffnen zu können.
(George Lukas)
  Mit Zitat antworten Zitat
taktaky
(Gast)

n/a Beiträge
 
#6

Re: Types of actual and formal var parame

  Alt 27. Sep 2007, 22:49
Zitat von Zacherl:
Screen.Cursor := crNone
Leider der von Dir geschriebenen Code, nur beim schönen Wetter funktioniert

Was wäre wenn ich eine fremde Anwendung in meine Form binde ?! Natürlich wird der Cursor
trotz der Code " Screen.Cursor := crNone" oder "Bevel1.Cursor:=crNone;" nicht ausgeblendt.

Ich binde eine fremde Anwenung in meine Form so :
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var dhwnd1: THandle;
begin
 shellexecute(1,'open','"test.exe"','','',SW_show);// die fremde Anwendung wird gestartet

 panel1.SetFocus;
 dhwnd1:=FindWindow('TMainForm',nil); // die fremde Anwendung wird gesucht

   if dhwnd1<>0 then Windows.SetParent(dhwnd1, panel1.Handle);
 //EnableWindow(FindWindow('TMainForm', nil),false);

   ShowWindow(dhwnd1, SW_MAXIMIZE); // maximiert fremde Programme


end;
Der Cursor bleibt leider immer eingeblendet, wenn er auf die fremde Anwendung (test.exe, die in Form gebunden ist) sich bewegt.

Die Lage wie du siehst, ist nicht so einfach
________
  Mit Zitat antworten Zitat
Nuclear-Ping
(Gast)

n/a Beiträge
 
#7

Re: Types of actual and formal var parame

  Alt 28. Sep 2007, 01:19
Überleg doch mal selber: Wenn du auf das Bevel klickst, während sich die fremde Anwendung darin befindet, klickst du nicht auf das Bevel sondern auf die Anwendung.

Fazit: Die Window-Proc wird garnicht erst aufgerufen, denn du klickst nicht auf das Bevel sondern auf die Anwendung.

Ergo müsstest du die fremde Anwendung irgendwie so umbiegen, dass SIE (und nicht DEIN Prog) beim Klick auf sie den Cursor ausblendet. Aber das ist schonwieder ein Kapitel für sich. An deiner Stelle würde ich mit dem Cursor leben. ... Quark ...

Edit:
Am besten legst du ein TImage mit Align = alClient auf das Bevel, reagierst dort einfach auf den Image1.OnClick und blendest ihn mit Image1.Cursor := crNone oder so aus.

Und jetzt mach nicht wieder Screenshots, wenn er meint "Undefined identifier: Cursor" bei Image1. Ich hab keine Ahnung, ob Image1 eine Cursor-Eigenschaft hat. Ich weiß nichtmal, ob Image überhaupt ein OnClick hat. Habs nicht getestet. Sonst machs halt mit nem transparenten Panel und Screen.Cursor - aber da blendet es im ganzen System den Cursor aus.
  Mit Zitat antworten Zitat
taktaky
(Gast)

n/a Beiträge
 
#8

Re: Types of actual and formal var parame

  Alt 28. Sep 2007, 22:58
Zitat von Nuclear-Ping:
...
Am besten legst du ein TImage mit Align = alClient auf das Bevel, reagierst dort einfach auf den Image1.OnClick und blendest ihn mit Image1.Cursor := crNone oder so aus.
...
Na gut. Der Cursor wird durch Klick auf TImage ausgeblendet aber wenn ich die fremde Anwendung
lade (die in Panel unter TImage posisioniert) dann kann der Cursor nie ausgeblendet werden.

Ich habe versucht TImage mit Control (bring to Front) nach vorne zu verschieben ohne Erfolg !!!



______
  Mit Zitat antworten Zitat
Nuclear-Ping
(Gast)

n/a Beiträge
 
#9

Re: Types of actual and formal var parame

  Alt 29. Sep 2007, 00:10
Naja, wie du ja weißt (http://www.delphipraxis.net/internal...t.php?t=119222) kann man ein TImage nicht mit BringToFront behandeln. Such dir ein transparentes Panel oder so.
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#10

Re: Types of actual and formal var parame

  Alt 29. Sep 2007, 09:06
Kann man nicht einfach einen Mousehook setzen, mit dem man dann kontrollieren kann, wie der Zeiger aussehen soll?
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  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 16: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