AGB  ·  Datenschutz  ·  Impressum  







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

Property "Objects" im Stringgrid

Ein Thema von Hansa · begonnen am 9. Jan 2005 · letzter Beitrag vom 24. Feb 2005
Antwort Antwort
Seite 5 von 6   « Erste     345 6      
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#41

Re: Property "Objects" im Stringgrid

  Alt 19. Feb 2005, 16:39
Und eine Zeile bestht aus ColCount Zellen. Gehe die doch einfach durch mit Schleife. Ein StringGrid besteht eben aus Zellen und nicht aus Zeilen.
Gruß
Hansa
  Mit Zitat antworten Zitat
plautzer

Registriert seit: 23. Aug 2003
172 Beiträge
 
#42

Re: Property "Objects" im Stringgrid

  Alt 20. Feb 2005, 12:14
Hi,

ich habe nochmal ein paar um zu vergewissen das ich auf dem richtigen weg bin.

Meine erste Frage hierzu:

Delphi-Quellcode:
Tgrid = class(Tstringgrid)
    public

    TableName : string;
  end;
Tzelle = class(tobject)
   private
   nr: integer;
   reihe: integer;
   editiert: boolean;
   end;
Ist das sinnvoll zwei objekte für das stringgrid zu wählen? Denn ich merk gerade das ich probleme habe, das grids nach dem zellenobjekt zu druchforsten:

Delphi-Quellcode:
for i := st_grid.FixedCols to st_grid.ColCount do
    for j := st_grid.FixedRows to st_grid.RowCount do
   if zelle.editiert = true then begin //prüfen ob die zelle editiert wurde
        showmessage(inttostr(zelle.reihe));
      end;
und so wird sie deklariert:

Delphi-Quellcode:
procedure TForm1.zellenchange(ACol, ARow : integer;sgNr:tgrid ;editiert:boolean);
begin
    if sgNr.Objects[ACol, ARow] <> nil then
    (sgNr.Objects[ACol, ARow] as Tzelle).editiert := editiert;
end;
...
x:=(Sender as Tstringgrid).Col;
y:=(Sender as Tstringgrid).row;
zellenchange(x,y,Sender as Tgrid,true);
Ich alles mit einem Objekt 'tgrid' machen?
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#43

Re: Property "Objects" im Stringgrid

  Alt 20. Feb 2005, 12:34
Ich habe ca. 20-40 Grids und komme mit 2 Objects aus. Eines für Eingabe und das andere für Ausgabe-Operationen. Vielleicht täusche ich mich, aber irgendwie sehe ich da zu viele "AS". Vermutlich bist du mit Tablename noch nicht so ganz einig. Packe den Namen doch notfalls auch noch in die Objects direkt mit rein.
Gruß
Hansa
  Mit Zitat antworten Zitat
plautzer

Registriert seit: 23. Aug 2003
172 Beiträge
 
#44

Re: Property "Objects" im Stringgrid

  Alt 23. Feb 2005, 19:43
Hi,

ich habe meine liebe zum array wieder gefunden

das ganze sieht nun so aus:

Delphi-Quellcode:
grid :array[1..20] of tstringgrid;
      grd:integer;

procedure TForm1.AddObjectToGrid(ACol, ARow : integer; nr : integer; st_grid:tstringgrid);
begin
  zelle := Tzelle.Create;
  zelle.nr := nr;
  zelle.reihe := arow;
  zelle.editiert:=false;
  st_grid.Objects[ACol, ARow] := zelle;
end;


grd:=1;
while grd < ibdataset1.RecordCount+1 do
begin
datum1:=ibdataset1.fieldbyname('ablesejahr').AsInteger;
NewTabSheet := TTabSheet.Create(PageControl1);
NewTabSheet.PageControl := PageControl1;
newtabsheet.Caption:= inttostr(grd);

grid[grd]:=tstringgrid.Create(newtabsheet);
grid[grd].Parent := newtabsheet;
//grid[grd].TableName:='grid' + inttostr(datum1);
grid[grd].name:='grid' + inttostr(datum1);
with grid[grd] do
....

  k:=0;
  While K < ibDataset2.RecordCount do
  Begin
   grid[grd].RowCount := grid[grd].RowCount +1;
   grid[grd].Cells[1,k+1]:=ibdataset2.fieldbyname('ablese_nr').AsString;
   grid[grd].Cells[2,k+1]:=ibdataset2.fieldbyname('ablesedatum').AsString;
   AddObjectToGrid(1, k+1, ibdataset2.fieldbyname('ablese_nr').AsInteger, grid[grd]);
   AddObjectToGrid(2, k+1, ibdataset2.fieldbyname('ablese_nr').AsInteger, grid[grd]);
   ibdataset2.Next;
   k:=k+1
  end;
...
Per keydown wird das objekt zellen.editiert auf true gesetzt und das will ich dann so auslesen:
Delphi-Quellcode:
 
for k:=1 to grd do
  for i :=grid[k].FixedCols to grid[k].ColCount do <--- Hier bringt Delphi die Fehlermeldung
    for j := grid[k].FixedRows to grid[k].RowCount do
       if zelle.editiert = true then
          begin
          zelle.editiert:=false;
          showmessage(inttostr(zelle.reihe));
          end
Wenn ich das jetzt ausführe, und nichts wurde geändert, dann kommt ne Fehlermeldung "Zugriffsverletzung...". Die kommt auch, wenn die Schleife einmal durchlaufen wurde.
Sieht jemand den Grund dafür?

Thx,

Plautzer
  Mit Zitat antworten Zitat
Keldorn

Registriert seit: 6. Mär 2003
Ort: Meißen
876 Beiträge
 
Delphi 10.1 Berlin Professional
 
#45

Re: Property "Objects" im Stringgrid

  Alt 23. Feb 2005, 19:51
Hallo
Delphi-Quellcode:
  for i :=grid[k].FixedCols to grid[k].ColCount -1 do
    for j := grid[k].FixedRows to grid[k].RowCount -1 do
die rows und cols fangen bei 0 an, die letze ist jeweils Anzahl-1

Mfg Frank

Lükes Grundlage der Programmierung:
Es wird nicht funktionieren
(Murphy)
  Mit Zitat antworten Zitat
plautzer

Registriert seit: 23. Aug 2003
172 Beiträge
 
#46

Re: Property "Objects" im Stringgrid

  Alt 23. Feb 2005, 20:06
Der Fehler bleibt unverändert

Delphi-Quellcode:
k:=1;
while k < grd+1 do
  begin
  for i :=grid[k].FixedCols to grid[k].ColCount-1 do
    for j := grid[k].FixedRows to grid[k].RowCount-1 do
       if zelle.editiert = true then
          begin
          zelle.editiert:=false;
          showmessage(inttostr(zelle.reihe));
          end;
    k:=k+1;
    enD;
Plautzer
  Mit Zitat antworten Zitat
Keldorn

Registriert seit: 6. Mär 2003
Ort: Meißen
876 Beiträge
 
Delphi 10.1 Berlin Professional
 
#47

Re: Property "Objects" im Stringgrid

  Alt 23. Feb 2005, 20:16
Zitat:
while k < grd+1 do
warum jetzt hier +1?

dein grid-array ist statisch. Das fängt und endet dort, wie du es definierst [1 bis 20] oder auch [99 bis 101]. cols und rows sind dynamisch, die beginnen bei 0.

Mfg Frank

Lükes Grundlage der Programmierung:
Es wird nicht funktionieren
(Murphy)
  Mit Zitat antworten Zitat
plautzer

Registriert seit: 23. Aug 2003
172 Beiträge
 
#48

Re: Property "Objects" im Stringgrid

  Alt 23. Feb 2005, 21:28
Zitat:
warum jetzt hier +1?
Angenommen es gibt 3 grids, k wurde anfangs auf 1 gesetzt, also muss die schleife 3mal durchlaufen werden. Wenn also k = 1 und grd = 3, dann wird die schleife nur zweimal durchlaufen, also ist k max 2.

Das fängt und endet dort, wie du es definierst [1 bis 20] oder auch [99 bis 101]. cols und rows sind dynamisch, die beginnen bei 0. heißt das, dass grd immer bis 20 durchlaufen wird? Ich habe aber angenommen nur 1..3 von den 1..20 benutzt, kann man das irgentwie einschränken?

PLautzer
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#49

Re: Property "Objects" im Stringgrid

  Alt 23. Feb 2005, 23:23
Plautzer, der Weg am Anfang war schon gut. Jetzt kommt ein 2-dimensionales Problem ins Spiel. Ist das wirklich nötig ? 8)
Gruß
Hansa
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#50

Re: Property "Objects" im Stringgrid

  Alt 23. Feb 2005, 23:48
Zitat von Hansa:
Plautzer, der Weg am Anfang war schon gut. Jetzt kommt ein 2-dimensionales Problem ins Spiel. Ist das wirklich nötig ? 8)
Der Weg war weder am Anfang gut, noch wird er gut werden wenn ihr euch weiter auf diesem Holzweg aufhaltet.
Objects ist, genau wie Tag, nur eine Art Hilfe für Quick'nDirty-Lösungen. Wenn es mal husch-husch gehen muss.
Da ihr jetzt schon mehrere Tage damit verbringt kann man Quick rausstreichen.
Ihr scheint nicht sehr vetraut mit OOP zu sein. (ist nicht böse gemeint )
Doch selbst mit wenig Erfahrung in objektorientierter Programmierung solltet ihr in wenigen Stunden eine eigene Grid-Ableitung hinbekommen können.
Eine in der man sein Formular nicht mit unnötigen Code vollstopfen muss.
http://www.delphipraxis.net/internal...=301978#301978
Sowas hat einfach rein gar nichts in einem Formular zu suchen, das kann man doch sonst nie wiederverwenden, geschweige denn lesen.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 5 von 6   « Erste     345 6      


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 10:08 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