![]() |
Delphi-Version: 7
TWinControl erwartet, TControl vorhanden?
Besser konnte ich's auf die schnelle nicht betiteln..
Ich schreib' grad einen FormularEditor, der dann an Hand einer Liste diverse Controls auf ein Fenster klatschen soll... Soweit klappt das schon ganz proper, jetzt bin ich wieder an einer Grenze angelangt. Ich habe ein globales Array von TControl gebastelt,
Code:
mittels meiner Routinen erstelle ich die diversen Controls, zB:
var
arCtl: array of TControl;
Code:
soll dieser Code ein EditFeld am Form darstellen, tut er auch recht brav. Dann bin ich auf die Idee gekommen, dass ja vor jedem Edit-Feld üblicherweise ein Label ist. In meiner Liste der Beschreibung steht das Label-Feld vor dem Edit Feld. Jetzt sollte beim Label-Feld als .FocusControl das darauf folgende Edit-Feld eingetragen werden können, damit der Anwender mit ALT-Buchstabe auf's Label fokussieren kann (bzw. Versucht) und das Label den Fokus auf das passende Edit-Feld durchreicht... Hoffe es kann mir da noch jemand folgen?
procedure MSK_Edit(s:string;p:TForm;o:TComponent);
var rC: rCtl; //BESCHREIBUNG DES CONTROLS i: integer; begin rC:=MSK_Coords(s); //BESCHREIBUNG HOLEN i:=MSK_NewIndex; //NEUEN INDEX HOLEN arCtl[i]:=TEdit.Create(o); //CONTROL ERSTELLEN arCtl[i].Parent:=p; //PARENT EINTRAGEN arCtl[i].Left:=rC.myL; arCtl[i].Top:=rC.myT; arCtl[i].Width:=rC.myW; arCtl[i].Height:=rC.myH; if rC.myCC='N' then (arCtl[i] as TEdit).CharCase:=ecNormal; if rC.myCC='U' then (arCtl[i] as TEdit).CharCase:=ecUpperCase; if rC.myCC='L' then (arCtl[i] as TEdit).CharCase:=ecLowerCase; (arCtl[i] as TEdit).MaxLength:=rC.myML; myCtl:=arCtl[i]; if rc.PC='J' then (arCtl[i-1] as TLabel).FocusControl:=myCtl; <--------------- GENAU HIER KLEMMTS WIEDER MAL... end; Wenn ich's mit dem Code im obigen Beispiel verwende meint der Compiler frecherweise, dass ich wieder mal Äpfel (TWinControl, welches er erwarten täte) mit Birnen (TControl, welches ich sichtlich übergebe) verwechsle... rc.PC bedeutet ungefähr "Previous Control", wenn da nen "J" drin ist soll das vorig erstellte Control (=Label) eben diesen Eintrag bekommen... Ich bitte wieder um Ideen/Lösungsansätze... greetz, Joerginger |
AW: TWinControl erwartet, TControl vorhanden?
Delphi-Quellcode:
if (rc.PC='J') and (myCtl is TWinControl) then
(arCtl[i-1] as TLabel).FocusControl:=TWinControl(myCtl); |
AW: TWinControl erwartet, TControl vorhanden?
Ich dank' 1000Mal, bisserl adaptiert, sofort funktioniert...
greetz, Joerginger |
AW: TWinControl erwartet, TControl vorhanden?
Aber nur wenn du sicher bist, daß aich ein TWnControl darin liegt.
ansonsten so
Delphi-Quellcode:
(arCtl[i-1] as TLabel).FocusControl:=(myCtl as TWinControl);
|
AW: TWinControl erwartet, TControl vorhanden?
Deswegen frage ich das ja vorher ab, so kommt keine Exception hoch, was bei as AFAIK der Fall ist.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:37 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