![]() |
CommandLinks und AeroWizards
Hallo!
Ich weiß, dass ich heute schon ein ähnliches Thema gepostet habe, aber ich fürchte, dass ich es falsch angegangen bin. Also: Ich möchte AeroWizards und CommandLinks erstellen. Ich bräuchte die Definitionen von BS_COMMANDLINK und von PSH_AEROWIZARD. Ich habe gegooglet und habe PSH_AEROWIZARD = $00004000 gefunden. Stimmt das? Ich habe auch keine Ahnung mit welcher Procedure ich das realisieren soll. Danke im Vorraus! |
Re: CommandLinks und AeroWizards
BS_COMMANDLINK ist 0x0000000E
BCM_SETNOTE ist 0x00001609 PSH_AEROWIZARD ist wie du gesagt hast. |
Re: CommandLinks und AeroWizards
Mit welcher Procedure soll ich den Style ändern?
|
Re: CommandLinks und AeroWizards
Scau mal
![]() |
Re: CommandLinks und AeroWizards
Wie geht das unter Delphi?
Ich kann Programmiersprachen nicht gut übersetzen :oops: |
Re: CommandLinks und AeroWizards
Schau dir doch mal Daniels Videos an:
![]() Da sollte auch was zu den Vista-Sachen dabeisein. |
DP-Maintenance
Dieses Thema wurde von "Daniel" von "Windows 9x / ME / 2000 / XP / 2003 / Vista" nach "Sonstige Fragen zu Delphi" verschoben.
|
Re: CommandLinks und AeroWizards
Probier mal folgendes:
Delphi-Quellcode:
const
BS_COMMANDLINK = 0x0000000E; BCM_SETNOTE = 0x00001609 TCommandLink = class (TButton) public procedure SetNote(strNote: String); protected procedure CreateParams(var Params: TCreateParams); override; end; procedure TCommandLink.SetNote(Note: String); begin SendMessage(Handle, BCM_SETNOTE, 0, strNote); end; procedure TCommandLink.CreateParams(var Params: TCreateParams); begin Params.Style := (Params.Style or BS_COMMANDLINK end; |
Re: CommandLinks und AeroWizards
Es gibt nur ein Problem.
SendMessage ist so aufgebaut: { hWnd Cardinal Msg Cardinal lParam Integer wParam Integer --Hier sollte ich einen String eingeben :shock: } |
Re: CommandLinks und AeroWizards
Nur der Vollständigkeit halber: Wenn Du Dich für den Weg mit den Messages entscheidest, dann klappt das nur unter Vista.
Wenn Du diese Controls auch in früheren Windows-Versionen verfügbar haben möchtest, dann brauchst Du welche, die sich selbst zeichnen und somit die Controls von Vista imitieren. Ich bin gerade ein wenig überrascht, dass es da bei Torry scheinbar noch keine Flut an CommandLink-Buttons gibt. |
Re: CommandLinks und AeroWizards
Ich möchte das Ganze ja für Vista.
|
Re: CommandLinks und AeroWizards
Es funktioniert noch immer nicht.
Ich habe versucht TurboMartins Quellcode in eine Komponente zu packen. Doch wenn ich die Komp aufs Formular schmeißen will heißt es: TCommandLink hat keine übergeordnete Komponente. (oder so) Obwohl TButton (von der die Komp ausgeht) doch Parent gesetzt hat. Hier der Code:
Delphi-Quellcode:
Das mit
unit CommandLink;
interface uses SysUtils, Classes, Controls, StdCtrls; type TCommandLink = class(TButton) private { Private-Deklarationen } protected procedure CreateParams(var Params: TCreateParams); override; public { Public-Deklarationen } published { Published-Deklarationen } end; procedure Register; const BS_COMMANDLINK = $0000000E; implementation procedure TCommandLink.CreateParams(var Params: TCreateParams); begin Params.Style := Params.Style or BS_COMMANDLINK; end; procedure Register; begin RegisterComponents('Own', [TCommandLink]); end; end.
Delphi-Quellcode:
funktioniert ja nicht. (wParam ist nicht String)
SendMessage(Handle, BCM_SETNOTE, 0, strNote);
|
Re: CommandLinks und AeroWizards
Hallo,
ich bin jetzt so weit, dass er auf dem Designer richtig gezeichnet wir. Ich werde mal weiterschauen und dir bescheidgeben und hier veröffentlichen. |
Re: CommandLinks und AeroWizards
Moin Delphi User,
Zitat:
Da kann man sich mit einem Cast behelfen:
Delphi-Quellcode:
SendMessage(Handle,BCM_SETNOTE,0,lParam(PChar(strNote)));
|
Re: CommandLinks und AeroWizards
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo, ich wollte jetzt mal ein kleines Beispiel zeigen. Einzigstes Problem ist zur Zeit noch, dass die Notiz nicht richtig angezeigt wir. Das werde ich aber auch noch hinbekommen.
|
Re: CommandLinks und AeroWizards
|
Re: CommandLinks und AeroWizards
Liste der Anhänge anzeigen (Anzahl: 1)
So, ich hab es jetzt fertig. Als Ziel habe ich mir mal gesetzt, auch die anderen Komponenten von der Seite für Delphi zu basteln.
Einzigstes, was hier nicht implementiert ist, sind die Windows-Standard-Icons(Info,Warnung,Error) anzeigen zu lassen, werde ich aber in der Ferigen Sammlung drinnen haben.
Delphi-Quellcode:
[edit]Kleine Demo noch angehangen[/edit]
unit CommandLink;
interface uses SysUtils, Classes, Controls, StdCtrls, Windows, Graphics, Messages; type TCommandLink = class(TButton) private fNote: WideString; fShield: Boolean; fIcon: TIcon; procedure SetNote(Value: WideString); procedure SetShield(Value: Boolean); procedure SetIcon(Value: TIcon); procedure UpdateIcon(Sender: TObject); protected procedure CreateParams(var Params: TCreateParams); override; public constructor Create(AOwner: TComponent); override; published property Note: WideString read fNote write SetNote; property Shield: Boolean read fShield write SetShield default false; property Icon: TIcon read fIcon write SetIcon; end; procedure Register; const BS_COMMANDLINK = $0000000E; BCM_SETNOTE = $00001609; BCM_FIRST = $1600; BCM_SETSHIELD = BCM_FIRST + $000C; BM_SETIMAGE = $00F7; implementation constructor TCommandLink.Create(AOwner: TComponent); begin inherited Create(AOwner); fIcon := TIcon.Create; fIcon.OnChange := UpdateIcon; end; procedure TCommandLink.CreateParams(var Params: TCreateParams); begin inherited CreateParams(Params); Params.Style := Params.Style or BS_COMMANDLINK; end; procedure TCommandLink.SetNote(Value: WideString); begin SendMessage(Handle, BCM_SETNOTE, 0, lParam(Pointer(Value))); fNote := Value; end; procedure TCommandLink.SetShield(Value: Boolean); begin SendMessage(Handle, BCM_SETSHIELD, 0, lParam(Value)); fShield := Value; end; procedure TCommandLink.SetIcon(Value: TIcon); begin SendMessage(Handle, BM_SETIMAGE, 1, lParam(fIcon.Handle)); fIcon.Assign(Value); end; procedure TCommandLink.UpdateIcon(Sender: TObject); begin SendMessage(Handle, BM_SETIMAGE, 1, lParam(fIcon.Handle)); end; procedure Register; begin RegisterComponents('Vista', [TCommandLink]); end; end. |
Re: CommandLinks und AeroWizards
Danke, du bist mein Lebensretter!! :lol:
|
Re: CommandLinks und AeroWizards
Ggf. sollte ich was zur Funktion dazusagen:
Neu zum Vorgänger TButton sind die Eigenschaften Note, Shield und Icon.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:27 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz