Hier mal der Vollständigkeit halber der gesamte relevante Quelltext :
.
Code: Alles auswählen
var
.
. // 2-dimentionales Feld zur Anzeige der Aufträge auf PArbeitsblatt
. // Format Spalte / Zeile
. Arbeitsblatt_Ausgabe : array[1..11, 1..20] of TLabel;
Beim Erstellen des Hauptformulars wird das Array dann inialisiert :
. procedure THauptFormular.FormCreate(Sender: TObject);
. begin
. {Formular vertikal und horizontal ausrichten}
. HauptFormular.Top := 0;
. HauptFormular.Left := -5;
. HauptFormular.Height := 890;
. HauptFormular.Width := Screen.Width;
. {Ausgabe auf Panel Arbeitsblatt initialisieren}
. IniArbeitsblatt;
. end;
..... mit Hilfe dieser Procedure
. procedure IniArbeitsblatt;
. var
. Spalte, Zeile, oben, links : Integer;
.
. Begin
. oben := 50;
. links := 10;
. For Zeile := 1 to 20 do
. Begin
. For Spalte := 1 to 11 do
. Begin
. Arbeitsblatt_Ausgabe[Spalte,Zeile] := TLabel.Create(Hauptformular.PArbeitsblatt);
. Arbeitsblatt_Ausgabe[Spalte,Zeile].Visible := false;
. Arbeitsblatt_Ausgabe[Spalte,Zeile].Enabled := true;
. if Spalte = 1 then
. Arbeitsblatt_Ausgabe[Spalte,Zeile].Top := oben
. else
. Arbeitsblatt_Ausgabe[Spalte,Zeile].Top := oben+(Zeile*25);
. if Spalte = 1 then
. Arbeitsblatt_Ausgabe[Spalte,Zeile].Left := links
. else
. Arbeitsblatt_Ausgabe[Spalte,Zeile].Left := links+(Spalte*40);
. Arbeitsblatt_Ausgabe[Spalte,Zeile].Height := 25;
. Arbeitsblatt_Ausgabe[Spalte,Zeile].AutoSize := true;
. Arbeitsblatt_Ausgabe[Spalte,Zeile].Caption := '';
. Arbeitsblatt_Ausgabe[Spalte,Zeile].DragCursor := crNone;
. Arbeitsblatt_Ausgabe[Spalte,Zeile].Font.Color := clMaroon;
. Arbeitsblatt_Ausgabe[Spalte,Zeile].font.Height := -19;
. Arbeitsblatt_Ausgabe[Spalte,Zeile].Font.Bold := true;
. Arbeitsblatt_Ausgabe[Spalte,Zeile].ParentColor := false;
. end;
. end;
. end;
.
..... dabei werden erst einmal alle Labels auf visible = false gesetzt.
..... danach erfolgt der Übertrag der Daten (ausgelöst durch den Click auf den Button "übernehmen"), wobei alle betroffenen Labels, die auch angezeigt werden sollen,
..... expliziet auf visible = true gesetzt werden :
. procedure THauptFormular.UebernehmenClick(Sender: TObject);
. var
. temp1, temp2 : String;
. Zeile : Integer;
. Spalte : Integer;
. AnzSpalte : Integer = 11;
. jetzt : TDateTime;
.
. begin
. //suchen der Zeilennummer
. temp1 := AuftragLabel.Caption;
. temp2 := Copy(temp1, length(temp1)-1, 2);
. if length(temp2) <> 2 then
. setLength(temp2,2);
. Zeile := StrToInt(temp2);
. jetzt := Now;
.
. { Versuch die Eingaben über ein dynamisches Array auf dem Panel "PArbeitsblatt" auszugeben }
.
. For Spalte := 1 to AnzSpalte do
. Begin
. case Spalte of
. 1 : Begin // Zeitstempel
. Arbeitsblatt_Ausgabe[Spalte,Zeile].Caption := DateTimeToStr(jetzt);
. Arbeitsblatt_Ausgabe[Spalte,Zeile].Visible := false;
. End;
. 2 : Begin // Zeilen Nr.
. Arbeitsblatt_Ausgabe[Spalte,Zeile].Caption := IntToStr(Zeile);
. Arbeitsblatt_Ausgabe[Spalte,Zeile].Visible := true;
. End;
. 3 : Begin // Anfahrstelle
. Arbeitsblatt_Ausgabe[Spalte,Zeile].Caption := AuftragAnfahrstelle.Text;
. Arbeitsblatt_Ausgabe[Spalte,Zeile].Visible := true;
. End;
. 4 : Begin // LabelLand
. Arbeitsblatt_Ausgabe[Spalte,Zeile].Caption := AuftragLand.Text;
. Arbeitsblatt_Ausgabe[Spalte,Zeile].Visible := true;
. End;
. 5 : Begin // Postleitzahl
. Arbeitsblatt_Ausgabe[Spalte,Zeile].Caption := AuftragPLZ.Text;
. Arbeitsblatt_Ausgabe[Spalte,Zeile].Visible := true;
. End;
. 6 : Begin // Stadt
. Arbeitsblatt_Ausgabe[Spalte,Zeile].Caption := AuftragStadt.Text;
. Arbeitsblatt_Ausgabe[Spalte,Zeile].Visible := true;
. End;
. 7 : Begin // LabelAnkunft bei dr Anfahrstelle
. Arbeitsblatt_Ausgabe[Spalte,Zeile].Caption := AuftragAnkunft.Text;
. Arbeitsblatt_Ausgabe[Spalte,Zeile].Visible := true;
. End;
. 8 : Begin // LabelAbfahrt zur nächsten Anfahrstelle
. Arbeitsblatt_Ausgabe[Spalte,Zeile].Caption := AuftragAbfahrt.Text;
. Arbeitsblatt_Ausgabe[Spalte,Zeile].Visible := true;
. End;
. 9 : Begin // Tachostand bei LabelAnkunft zur Ermittlung der Anfahrstrecke
. Arbeitsblatt_Ausgabe[Spalte,Zeile].Caption := AuftragKM.Text;
. Arbeitsblatt_Ausgabe[Spalte,Zeile].Visible := true;
. End;
. 10 : Begin // Kennzeichnung des angelieferten Containers
. Arbeitsblatt_Ausgabe[Spalte,Zeile].Caption := AuftragContainer.Text;
. Arbeitsblatt_Ausgabe[Spalte,Zeile].Visible := true;
. End;
. 11 : Begin // Auftragsnummer
. Arbeitsblatt_Ausgabe[Spalte,Zeile].Caption := AuftragNummer.Text;
. Arbeitsblatt_Ausgabe[Spalte,Zeile].Visible := true;
. End;
. end;
. end;
.
. //löschen der Eingaben und verbergen des Panel Arbeit ( Panel Arbeit ist ein zusätzlichen Panel, auf dem verschiedene TEdit-Komponenten platziert sind)
.
. Hauptformular.PAuftrag.Visible := false;
. Auftrag_Eingaben_verwerfen;
. end;
Das Hilfspanel "Arbeit" verschwindet und die Daten stehen im Array, sogar an der richtigen Stelle.
Das Array soll mit den Spalte, deren Felder auf visible = true gesetzt wurden, auf dem Panel "Arbeitsblatt erscheinen.
Aber das tun sie nicht !!!
Könnte es sein, dass mein Array soweit im Hintergrund gezeigt wird und wie bekomme ich es in den Vordergrund ???
Denn da ist es auf jeden Fall.
Kann ich zur Laufzeit die Z-Reihenfolge ändern und sie vielleicht so nach vorne bringen ?
Vielen Dank für Eure Geduld - ich bin schon ein schwieriger Fall