![]() |
ComboBox Text beim zuklappen beeinflussen
Hi,
ich hab ne combobox bei der die einträge zusätzlich zu meinen daten auch noch aus ner beschreibung zu den daten bestehen also so nach dem motto "daten: Beschreibung". Jetzt möcht ich das nach dem ich einen eintrag selektiere das im text der combobox ned der ganze eintrag steht sondern nur die daten. Ich hab auch schon mal versuch im onchange ereigniss den text der combobox zu setzen aber das ignoriert er einfach. Jemand ne idee wie ich das erreichen könnte ohne gleich das ganze ondrawitem ereignis neu schreiben zu müssen? MfG und thx Blizzard |
Re: ComboBox Text beim zuklappen beeinflussen
du könntest doch einfach den Eintrag verändern!
Dazu kannst du ein Array mit den Einträgen mitführen, einem mit und einmal ohne Beschreibung Beim Ein- und Ausklappen veränderst du den entsprechenden Eintrag mit Hilfe der beiden Arrays |
Re: ComboBox Text beim zuklappen beeinflussen
wo ich die daten herbekomme is mir schon klar ich hab jedem eintrag ein tobject zugeordnet in dem die ganzen daten gespeichert sind. das problem ist das ich den text der hinterher "auf" der combobox steht nicht beeinflussen kann.
|
Re: ComboBox Text beim zuklappen beeinflussen
TCombobox.Items
|
Re: ComboBox Text beim zuklappen beeinflussen
Hi,
hab jetzt auch ne weile rumprobiert. Aber ne richtig elegante Lösung hab ich nicht gefunden. Mit nem Timer gehts aber (besser als nix:D):
Delphi-Quellcode:
Wie gesagt, nich so doll, aber es geht erstmal
procedure comboboxSelect(Sender: TObject);
begin Timer1.Enabled := True; end; procedure Timer1Timer(Sender: TObject); begin //Timer Intervall hab ich auf 10 gestellt combobox.Text := //Deine Anweisungen... Timer1.Enabled := False; end; CU :hi: [EDIT]Scheint aber nur mit dem Style: csDropDown zu funktionieren![/EDIT] |
Re: ComboBox Text beim zuklappen beeinflussen
ich glaub du verstehst mich falsch:
also ich versuchs mal en bisserl besser zu erklären ich hab items in meiner combobox die in etwa so aussehen 1. 5.22 : blablabla 2. 13.5 : blablabla 3. 8.3 : blablabla so und wenn ich jetzt den zweiten eintrag auswähle soll in der text eigenschaft der combobox nicht 13.5 : blablabla stehen sondern nur 13.5 das bekomm ich allerdings ned hin, da wenn ich bei onchange oder onselect oder so den text auf 13.5 setzte delphi ihn durch das zuklapp ereignis wieder mit 13.5 : blablabla überschreibt. ich hoff mal das war jetzt verständlicher |
Re: ComboBox Text beim zuklappen beeinflussen
Das is mir schon klar :wink:
nimm doch meine zwei Proceduren und probier es mal! ich habs mal schnell mit Copy() probiert und immer nur die ersten 5 Buchstaben anzeigen lassen, klappte wunderbar... CU |
Re: ComboBox Text beim zuklappen beeinflussen
das hatte ich schon verstanden, meine beiden Beiträge sollten aber dennoch zur Lösung führen.
Ich habe ja nichts von Text gesagt. Ändere doch die Items!! |
Re: ComboBox Text beim zuklappen beeinflussen
wenn das mit copy wie M.O.D sagt funktioniert ist das natürlich einfacher, aber hier mal das, was ich dir geschrieben habe:
funktioniert ebenfalls ohne probs. Musst allerdings im Objektinspektor bei Items auch noch 4 Zeilen reinschreiben, damit dieses Beispiel funktioniert!
Delphi-Quellcode:
var
array1: array[0..3] of string; array2: array[0..3] of string; implementation procedure TForm1.ComboBox1Change(Sender: TObject); var index: integer; begin with Combobox1 do begin index:=ItemIndex; items[Index]:=array1[index]; ItemIndex:=index; end; end; procedure TForm1.ComboBox1DropDown(Sender: TObject); var index: integer; begin with Combobox1 do begin index:=ItemIndex; items[index]:=array2[index]; ItemIndex:=index; end; end; procedure TForm1.FormCreate(Sender: TObject); begin combobox1.ItemIndex:=0; end; initialization array1[0]:='null'; array1[1]:='eins'; array1[2]:='zwei'; array1[3]:='drei'; array2[0]:='null null'; array2[1]:='eins eins'; array2[2]:='zwei zwei'; array2[3]:='drei zwei'; |
Re: ComboBox Text beim zuklappen beeinflussen
Hallo,
hier kommt mein Vorschlag:
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; const PM_COMBOBOX = WM_APP+1000; type TForm1 = class(TForm) ComboBox1: TComboBox; Button1: TButton; procedure ComboBox1Change(Sender: TObject); private { Private-Deklarationen } procedure PMCOMBOBOX(var Msg : TMessage); message PM_COMBOBOX; public { Public-Deklarationen } end; THelpComboBox = class(TComboBox) public property EditHandle; end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.ComboBox1Change(Sender: TObject); begin // PostMessage wird vom Formualr erst verarbeitet, wenn die // ComboBox alle Messages verarbeitet hat. PostMessage(Handle,PM_COMBOBOX,0,0); end; procedure TForm1.PMCOMBOBOX(var Msg: TMessage); var szBuffer : Array[0..120] of Char; begin StrPCopy(szBuffer,Copy(ComboBox1.Items[ComboBox1.ItemIndex],1,Pos(':',ComboBox1.Items[ComboBox1.ItemIndex])-1)); SendMessage(THelpComboBox(ComboBox1).EditHandle,WM_SETTEXT,0,Integer(@szBuffer)); end; end. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:03 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