Einzelnen Beitrag anzeigen

Joerginger

Registriert seit: 22. Jan 2009
Ort: Wien
38 Beiträge
 
Delphi 7 Enterprise
 
#1

TWinControl erwartet, TControl vorhanden?

  Alt 17. Mär 2011, 12:13
Delphi-Version: 7
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:
var
  arCtl: array of TControl;
mittels meiner Routinen erstelle ich die diversen Controls, zB:

Code:
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;
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?

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
  Mit Zitat antworten Zitat