![]() |
Invalid Class Typecast
Delphi-Quellcode:
Wieso erhalte ich hier diese Fehlermeldung?
if ((Sender as TListBox).Items.Count>0) then
Wogegen
Delphi-Quellcode:
in einer anderen Prozedur klappt?
(Sender as TListBox).ItemIndex ...
|
Re: Invalid Class Typecast
welche fehlermeldung? :stupid: meine glaskugel ist wohl noch in Hannover, sorry
|
Re: Invalid Class Typecast
Die aus meinem Titel, dachte das wäre klar :) .
Nochmal etwas mehr Code:
Delphi-Quellcode:
procedure TForm1.DigitaleRckwrtssuchemiteinbeziehen1Click(Sender: TObject);
var KeyInputs: array of TInput; KeyInputCount: Integer; wnd: HWND; s: string; procedure KeybdInput(VKey: Byte; Flags: DWORD); begin Inc(KeyInputCount); SetLength(KeyInputs, KeyInputCount); KeyInputs[KeyInputCount - 1].Itype := INPUT_KEYBOARD; with KeyInputs[KeyInputCount - 1].ki do begin wVk := VKey; wScan := MapVirtualKey(wVk, 0); dwFlags := KEYEVENTF_EXTENDEDKEY; dwFlags := Flags or dwFlags; time := 0; dwExtraInfo := 0; end; end; begin // Markierte Nummer in Zwischenablage if (Sender as TListBox).Items.Count > 0 then // HIER KOMMT DIE FEHLERMELDUNG begin s:= (Sender as TListBox).Items.Strings[(Sender as TListBox).ItemIndex]; // Wenn Nummer nicht mit 0 beginnt setze 07433 davor if s[1]<>'0' then s:= '07433'+ s; ClipBoard.AsText:= s; end; |
Re: Invalid Class Typecast
nun, ich glaube "DigitaleRckwrtssuchemiteinbeziehen1" ist weniger eine TStringList als vielmehr z.b. ein TButton, oder? Sender ist immer das steuerelement, das gerade gefeuert hat.
|
Re: Invalid Class Typecast
Ja stimmt,
Das ist ein Item aus Popup1, das nun aber von verschiedenen Listboxen aus aufgerufen werden kann. Wie kann ich dann den Sender , also der Listboxen, ins popupClick Ereignis mitgeben, damit der obige Code klappt? |
Re: Invalid Class Typecast
ganz einfach: sender raus, direkt die listbox rein.
|
Re: Invalid Class Typecast
Ja nein, die Prozedur soll ja von verschiedenen ListBoxen aus aufgerufen werden und in ihr dann auch die jeweilige ListBox die aufgerufen hat, verarbeitet werden.
|
Re: Invalid Class Typecast
oha, dann wirds ein wenig haariger.
mal sehen... zuerst machst du im private-abschnitt deiner Formdeklaration einen listbox-pointer rein:
Delphi-Quellcode:
dann machst du ein OnContextPopup für deine listboxen:
type TForm1=class(TForm);
... private currentlistbox:TListBox;
Delphi-Quellcode:
dieses ereignis musst du natürlich allen listboxen zuweisen, die das popup haben.
procedure TGLForm.ListBox1ContextPopup(Sender: TObject; MousePos: TPoint;
var Handled: Boolean); begin currentlistbox:=(sender as TListBox); handled:=false; end; du kannst dann in deinem menuitem-onclick einfach currentlistbox.items verwenden. :) |
Re: Invalid Class Typecast
Klappt, vielen Dank :thumb:
|
Re: Invalid Class Typecast
Ich bin mir nicht sicher, aber versuch mal das:
Delphi-Quellcode:
[edit]Zu spät... aber es ist kürzer :P [/edit]
CurrentListbox := TListBox(TPopUpMenu(Sender).PopUpComponent);
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:40 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