![]() |
Konstante per ComboBox auswählen
ich möchte, den PArameter
SC_MINIMIZE in
Delphi-Quellcode:
gerne per Combobox steuern, sprich ich wähle in der Box aus zwischen Minimize, Close etc. Dies wird im label1.Caption gespeichert, nun geben ich folgendes ein:
PostMessage(GetWindowHandleByExeName(Edit1.Text), WM_SYSCOMMAND,SC_MINIMIZE,0);
Delphi-Quellcode:
Doch leider kommt folgende Fehlermeldung:
PostMessage(GetWindowHandleByExeName(Edit1.Text), WM_SYSCOMMAND, Label1.Caption, 0);
Code:
[Hinweis] Unit1.pas(61): Auf 'GetWindowHandleByExeName' zugewiesener Wert wird niemals benutzt
[Fehler] Unit1.pas(126): Inkompatible Typen: 'Integer' und 'TCaption' Viele liebe grüße :) |
Re: Konstante per ComboBox auswählen
Du musst schon eine Abfrage dazwischenschalten:
Delphi-Quellcode:
var Flag: DWORD;
Flag := 0; case ComboBox1.ItemIndex of 0: Flag := SC_MINIMIZE; 1: Flag := SC_MAXIMIZE; ... end; PostMessage(GetWindowHandleByExeName(Edit1.Text), WM_SYSCOMMAND,Flag,0); |
Re: Konstante per ComboBox auswählen
okay, vielen Dank. Klappt super. :hello:
|
Re: Konstante per ComboBox auswählen
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,
auch, wenn es in diesem speziellen Fall vielleicht etwas hoch gegriffen ist; Du könntest Deiner ComboBox auch Objekte zuweisen, anstelle nur der Bezeichnungen. In diesen Objekten könntest Du dann die Integer-Werte speichern, die sich hinter Deinen Konstanten (SC_MINIMIZE, SC_MAXIMIZE etc.) verbergen. Hätte in diesem Deinem Beispiel aber nur einen Vorteil, und zwar den, dass Du Deine Case-Anweisung nicht überarbeiten müsstest, sollte sich die Reihenfolge Deiner Items irgendwann einmal ändern. Beispielprojekt im Anhang. |
Re: Konstante per ComboBox auswählen
Das ist zwar schön und gut, aber ich kann es leider nicht kompilieren.
Ich glaube ich habe eine zu alte Version, ich hab den Header/Uses "Variants" nicht. Desweiteren ist der Bezeichner "AddItem" undefiniert. Aber ich kann mir ungefähr vorstellen was du meinst, aber ich weiß nicht, wie ich es realisieren könnte. Aber vielen Dank ;) mfg |
Re: Konstante per ComboBox auswählen
Hab eine neue Version hochgeladen - ohne Variants.
Kannst es ja jetzt mal probieren - oder auch lassen ;) War eh nur nen kleines HowTo. |
Re: Konstante per ComboBox auswählen
Zitat:
Tut mir leid, aber danke für deine Bemühungen, ich hätts gern angeschaut ;) |
Re: Konstante per ComboBox auswählen
Könntest es noch probieren, indem Du vor AddFile 'Self' davor schreibst, also so:
Delphi-Quellcode:
Procedure TMyComboBox.AddConstant(_sText: String; _iID: Integer);
Begin Constant := TConstantID.Create; //Eine Instanz unseres Objektes erzeugen Constant.iID := _iID; //Die ID-Eigenschaft unseres Objects füllen Self.AddItem(_sText, Constant); //Unserer Combobox dieses Object hinzufügen End; Zitat:
Mit AddItem fügst Du sowohl einen String ein, als auch ein Object. Seltsam; welche Delphi-Version benutzt Du? |
Re: Konstante per ComboBox auswählen
Alternativ könntest Du auch folgendes machen - benutzt kein AddItem und ist nicht so oversized wie das erste Beispiel.
Delphi-Quellcode:
Procedure TForm1.Button1Click(Sender: TObject);
Begin ComboBox1.Items.AddObject('SC_MINIMIZE', TObject(61472)); ComboBox1.Items.AddObject('SC_MAXIMIZE', TObject(61488)); End; Procedure TForm1.ComboBox1Change(Sender: TObject); Var int: Integer; Begin int := Integer(ComboBox1.Items.Objects[ComboBox1.ItemIndex]); ShowMessage(inttostr(int)); End; |
Re: Konstante per ComboBox auswählen
ah coole Sache, aber woher weiß ich die Nummer hinter TObject?!
Zitat:
Viele Grüße.. :) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:18 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 by Thomas Breitkreuz