Aan bovenstaande tekst kunnen geen rechten worden ontleend. Aan de tekst hieronder wel.
Verder is het handig als je even de code van die combobox erbij zet, dan kunnen wij ook zien wat er eventueel fout gaat.
"If you don't know where you are going, any road will take you there"
De code erbij zetten is niet zo zinvol denk ik, want het is een spaghetti-code.
En nogmaals: in Windows 2000 werkt hij foutloos. WinXP lijkt een probleem te hebben.
Aan bovenstaande tekst kunnen geen rechten worden ontleend. Aan de tekst hieronder wel.
Een goede grap mag vrienden kosten.
"If you don't know where you are going, any road will take you there"
1
2
3
4
5
| procedure Tutdmain.cbCodeChange(Sender: TObject); begin iSelected:=cbCode.ItemIndex; ... ... |
Maar zoals ik min of meer verwachtte komt de debugger daar niet eens. Hij knalt al VOORDAT hij die OnChange event aan gaat roepen. En er zitten verder echt geen events gekoppeld aan die combobox. Omdat WinXP als enige een probleem lijkt te hebben lijkt het mij ook niet rechtstreeks aan de code te liggen, maar alle tips blijven welkom.
Aan bovenstaande tekst kunnen geen rechten worden ontleend. Aan de tekst hieronder wel.
"If you don't know where you are going, any road will take you there"
Op dit moment vul ik 'm met een aantal cijfers, wat dus ook letters kunnen worden, maar voorlopig zit dat zo:THEF_Pino schreef op 04 October 2003 @ 17:36:
Hoe en waarmee vul je de combo dan?
1
2
| cbCode.Items.Add('');
for iLoop:=1 to iNrCodes do cbCode.Items.Add(inttostr(iLoop)); |
Maar of dat echt relevant voor 't probleem is weet ik niet...
Aan bovenstaande tekst kunnen geen rechten worden ontleend. Aan de tekst hieronder wel.
Indien dit het geval was, dan ga je de selectie leegmaken. Dit kan je doen door de ItemIndex property op -1 te zetten.
Dit is een mooiere oplossing imo dan met een 'lege' waarde spelen:
1
2
3
| if Ord(Key) in [VK_BACK, VK_DELETE] then begin MyComboBox.ItemIndex := -1; end; |
https://fgheysels.github.io/
Als je durft kan je de VCL aanpassen. Dit is de goede code in StdCtrls.pas
1
2
3
4
5
6
7
8
9
10
11
12
13
| function TCustomComboBoxStrings.Get(Index: Integer): string; var Len: Integer; begin Len := SendMessage(ComboBox.Handle, CB_GETLBTEXTLEN, Index, 0); if (Len <> CB_ERR) {solution: also test for zero length} and (Len <> 0) then begin SetLength(Result, Len); SendMessage(ComboBox.Handle, CB_GETLBTEXT, Index, Longint(PChar(Result))); end else SetLength(Result, 0); end; |
Pas op! Dit werkt niet met runtime packages. Een oplossing die altijd werkt kan je hier vinden: http://codecentral.borlan...cweb.exe/listing?id=18872 en werkt door runtime in de VCL te gaan zitten hacken.
/edit
Of gewoon geen lege regel gebruiken natuurlijk
[ Voor 6% gewijzigd door LordLarry op 04-10-2003 19:30 ]
We adore chaos because we like to restore order - M.C. Escher
Aan bovenstaande tekst kunnen geen rechten worden ontleend. Aan de tekst hieronder wel.

