AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Mehrdimensionale TLabel-Arrays

Ein Thema von Chris WF · begonnen am 11. Mär 2006 · letzter Beitrag vom 11. Mär 2006
Antwort Antwort
Benutzerbild von Chris WF
Chris WF

Registriert seit: 15. Nov 2004
27 Beiträge
 
Delphi 5 Standard
 
#1

Mehrdimensionale TLabel-Arrays

  Alt 11. Mär 2006, 10:23
Hallo Leute,

ich hab ein Problem mit mehrdimensionalen TLabel-Arrays...
Ich will ein kleines Funprogramm schreiben, dass einen Matrixbildschirm kreiert.
Dazu erstelle ich im OnCreate die nötigen Arrayfelder in einer for-Schleife.
Mit einem Timer sollen dann die nullen/Einsen geändert werden, aber irgendwas klappt da nich so ganz

Hier einfach mal der Code:

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var x,y: integer;
begin
     randomize;
     form1.Left := 0;
     form1.Top := 0;
     form1.Width := screen.Width;
     form1.Height := screen.Height;

     for x := 0 to ((form1.Width-15) div 11) do
         for y := 0 to ((form1.height-30) div 26) do
         begin
              setlength(Labels,x+1,y+1);
              Labels[x,y] := TLabel.Create(self);
              with Labels[x,y] do
              begin
                   parent := self;
                   width := 10;
                   height := 24;
                   left := (11*(x)) + 2;
                   top := (26*(y)) + 2;
                   font.Color := clGreen;
                   font.height := -18;
                   caption := inttostr(round(random(2)));
                   OnClick := LabelsClick;

              end;
         end;
     timer1.Enabled := true;
end
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var x,y,r,c: integer;
begin
     randomize;
     for x := 0 to ((form1.Width-15) div 11) do
         for y := 0 to ((form1.height-30) div 26) do
         begin
              r := round(random(2));
              if (Labels[x,y].Caption = '0') OR (Labels[x,y].Caption = '1') then
                 c := strtoint(Labels[x,y].Caption)
              else
                  c := round(random(2));
              if (r = c) then
                 Labels[x,y].Caption := '0'
              else
                 Labels[x,y].Caption := '1';
         // labels[x,y].repaint;
         end;
end;
Ohne das auskommentierte Repaint wird nur die "Zeile" oben und die "Spalte" rechts aktualisiert
Mit Repaint kommt ein Zugriffsfehler...
  Mit Zitat antworten Zitat
Benutzerbild von konda
konda

Registriert seit: 20. Dez 2005
253 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Mehrdimensionale TLabel-Arrays

  Alt 11. Mär 2006, 16:39
Wie hast du Labels deklariert? Und wie sieht die Procedure LabelsClick aus? In dem Code sehe ich noch keinen Fehler.
  Mit Zitat antworten Zitat
MrKnogge

Registriert seit: 9. Jun 2003
Ort: Pforzheim
2.458 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Mehrdimensionale TLabel-Arrays

  Alt 11. Mär 2006, 16:48
Du darfst SetLength nicht in der Schleife aufrufen !

Denn wenn x das zweite mal durchläuft setzt es y wieder zurück.

gruss
Christian Bootz
Einstein ist tot, Newton ist tot,
und mir ist auch schon ganz schlecht...
  Mit Zitat antworten Zitat
Benutzerbild von Chris WF
Chris WF

Registriert seit: 15. Nov 2004
27 Beiträge
 
Delphi 5 Standard
 
#4

Re: Mehrdimensionale TLabel-Arrays

  Alt 11. Mär 2006, 18:25
Autsch...
Vielen Danke
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:49 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz