AGB  ·  Datenschutz  ·  Impressum  







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

Stringgrid und Objekte

Ein Thema von kiar · begonnen am 5. Mai 2004 · letzter Beitrag vom 6. Mai 2004
Antwort Antwort
Benutzerbild von kiar
kiar

Registriert seit: 2. Aug 2003
Ort: Aschersleben
1.362 Beiträge
 
Delphi 5 Professional
 
#1

Stringgrid und Objekte

  Alt 5. Mai 2004, 16:26
mit folgendem code
Delphi-Quellcode:
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
                                     Rect: TRect; State: TGridDrawState);

var
   Rect1,
   Rect2 :TRect;
     s
   ,s1:string;

begin

    s :='Hallo';
    s1:=' Welt';
    if gdfixed in state then exit;
      with stringgrid1 do
        begin
          if cells[Acol,arow] <> 'then
           begin
              If not FGeteilterDienst then
               begin
                 Rect1:=CellRect(Acol,Arow);
                 Canvas.Fillrect(Rect1);
                 drawText(canvas.Handle,
                          Pchar(s),length(s),
                          Rect, dt_singleline or
                          dt_center or dt_VCenter)
               end else
                 begin
                   FStatus:=pointer(Stringgrid1.objects[acol,arow]);
                   FStatus.Fdienst:=FGeteilterDienst;
                   Rect1:=CellRect(Acol,arow);
                   FStatus.FRect1Color:=zeigeFarbe;
                   Canvas.Brush.Color:=TColor(FStatus.FRect1Color);
                   Canvas.Fillrect(Rect1);
                   drawText(Canvas.Handle,
                            Pchar(s), length(s),
                            Rect1, Dt_Center);

                   Rect2:=cellrect(acol,arow);
                   Rect2.Left:= Rect1.left;
                   Rect2.top := Rect1.top+ RowHeights[Arow] div 2;
                   FStatus.FRect2Color:=zeigeFarbe1;
                   Canvas.Brush.Color:=TColor(FStatus.FRect2Color);
                   Canvas.FillRect(Rect2);
                   Drawtext(Canvas.Handle,
                            Pchar(s1), length(s1),
                            Rect2, DT_Center or DT_Wordbreak);

                 end;
          end;
      end;
end;


procedure TForm1.Button1Click(Sender: TObject);
var
 s:String;
begin

    if FgeteilterDienst then
       s:= 'Hallo' +#13#10 + 'Welt'
    else
       s:= 'Hallo';
       with Stringgrid1 do
         begin
            Cells[Col, Row]:=s;
            Objects[Col, Row]:=FStatus;
         end;
end;
will ich so etwas erreichen,

das die zellen zweifarbig dargestellt werden. das funktioniert so weit. wenn ich jetzt aber invalidate mache wird nur der status der letzten einstellung übernommen.

wie kriege ich das nun gebacken, das der status der jeweiligen zelle aufgerufen wird.

raik
verhältnisse die einem nicht passen,
muss man verändern oder verlassen
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

Re: Stringgrid und Objekte

  Alt 5. Mai 2004, 16:50
Du darfst innerhalb von DrawCell weder den Inhalt von StringGrid.Cells[] noch
StringGrid.Objects[] verändern (da du nicht kontrollieren kannst wie oft DrawCell aufgerufen wird) !

Aber genau das scheinst du zu tun:
Delphi-Quellcode:
FStatus:=pointer(Stringgrid1.objects[acol,arow]);
FStatus.Fdienst:=FGeteilterDienst; // Verboten
Also zurück an Anfang: "was willst du eigentlich erreichen ?" und
"wie soll das Grid aussehen und warum soll es so aussehen ?"
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von kiar
kiar

Registriert seit: 2. Aug 2003
Ort: Aschersleben
1.362 Beiträge
 
Delphi 5 Professional
 
#3

Re: Stringgrid und Objekte

  Alt 5. Mai 2004, 16:59
hallo ,

so wie im anhang sollte es aussehen,

ziel ist es verschiedene dienste in verschiedenen bereichen aufzuteilen, zur übersicht,sollten die hintergründe farbig den bereichen zugeordnet werden.

wenn die form sich wieder neu zeichnet, nimmt sie den letzten zustand von FStatus an.ich müsste in abhängingkeit von der zelle den status abrufen.

raik
Miniaturansicht angehängter Grafiken
zwischenablage03.jpg  
verhältnisse die einem nicht passen,
muss man verändern oder verlassen
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#4

Re: Stringgrid und Objekte

  Alt 5. Mai 2004, 17:12
Zitat von kiar:
ziel ist es verschiedene dienste in verschiedenen bereichen aufzuteilen, zur übersicht,sollten die hintergründe farbig den bereichen zugeordnet werden.

wenn die form sich wieder neu zeichnet, nimmt sie den letzten zustand von FStatus an.ich müsste in abhängingkeit von der zelle den status abrufen.
Du musst die Farben ausserhalb von DrawCell setzen, dann gibts keine Probleme.
Also brauchst du eine Methode, die .Objects[].FRect1Color und .Objects[].FRect2Color richtig
setzt. (Diese Methode muss die Abfolge der Zellen kennen; immer diagonal ?)
Bei FGeteilteDienst=True werden diese Farben beachtet, ansonsten nicht.
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von kiar
kiar

Registriert seit: 2. Aug 2003
Ort: Aschersleben
1.362 Beiträge
 
Delphi 5 Professional
 
#5

Re: Stringgrid und Objekte

  Alt 5. Mai 2004, 17:19
hallo shmia,

das muss nicht diagonal sein, es könnte bunt gemischt sein oder uni, deshalb ist FGeteilterDienst drin.
das object erstelle ich wie folgt
Delphi-Quellcode:
TStatus = class
  FDienst : Boolean;
  FColor1 : TColor;
  FColor2 : TColor;
end;
das ist mein objekt. ich hatte auch schon einen counter der mir die Objekte zählte, aber ich kam nicht darauf diesen mit Objects vom grid zu verbinden.

raik
verhältnisse die einem nicht passen,
muss man verändern oder verlassen
  Mit Zitat antworten Zitat
Quake

Registriert seit: 25. Aug 2003
222 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Stringgrid und Objekte

  Alt 6. Mai 2004, 08:55
Möchtest du dir Farbe abhänig vom Zellinhalt haben oder möchtest du die Farbe belibig an einer anderen Stelle festlegen?

ciao
  Mit Zitat antworten Zitat
Benutzerbild von kiar
kiar

Registriert seit: 2. Aug 2003
Ort: Aschersleben
1.362 Beiträge
 
Delphi 5 Professional
 
#7

Re: Stringgrid und Objekte

  Alt 6. Mai 2004, 09:16
die farbe wird an anderer stelle erstellt, sie wird über einen dialog ausgewählt.

das ist nicht das problem. ich weis bloß noch nicht, wie ich mein FStatus dem Stringgrid Object zuordnen kann?

raik
verhältnisse die einem nicht passen,
muss man verändern oder verlassen
  Mit Zitat antworten Zitat
Quake

Registriert seit: 25. Aug 2003
222 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: Stringgrid und Objekte

  Alt 6. Mai 2004, 09:42
Ich habe mal einem StringGrid Objekte zugeordnet. Dazu habe ich dynamisch für jede Zelle das Object erzeugt. Wenn du z.B 100 Zellen hast, musst du auch 100 deiner TStatus Objekte erstellen die dann im Speicher liegen. Beim erstellen der Objekte diese natürlich deinen Zelle zuordnen.
so z.B.
Code:
var
  Status: TStatus;
begin
  .
  .
  Status:=TStatus.Create();              // das für jede Zelle durchführen
  Stringgrid.Objects[ACol,ARow]:=Status;
  .
  .
end;
In CellDraw kannst du dann daruf zugreifen (NUR LESEN).
Code:
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
                                     Rect: TRect; State: TGridDrawState);

var
  Status: TStatus;
  Farbe: Tcolor;
begin
  .
  .
  Status:=StringGrid.Objects[ACol,ARow];
  Farbe:=Status.Fcolor1;
  .
  .
end;
Du kannst dann irgend wo im Code die eigenschaften der Objekte ändern.
Wenn du zur Laufzeit Neue Zellen erstellst musst du nur weitere Objekte erstellen und wenn du Zeilen löschste gebe sie frei mit Status.Free.

Meinst du das? Hilft dir das weiter oder habe ich dich immer noch nicht richtig verstanden?
  Mit Zitat antworten Zitat
Benutzerbild von kiar
kiar

Registriert seit: 2. Aug 2003
Ort: Aschersleben
1.362 Beiträge
 
Delphi 5 Professional
 
#9

Re: Stringgrid und Objekte

  Alt 6. Mai 2004, 09:45
ich vollidiot:

habe imformcreate nur ein object erstellt. natürlich wird dann Status immer überschrieben und auf den letzten stand gesetzt.

ich hoffe, das ich das nun endlich gebacken kriege,

danke shmia und quake

raik
verhältnisse die einem nicht passen,
muss man verändern oder verlassen
  Mit Zitat antworten Zitat
Quake

Registriert seit: 25. Aug 2003
222 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: Stringgrid und Objekte

  Alt 6. Mai 2004, 10:27
Juhu, ich konnte auch mal jemanden weiterhelfen.

ciao
  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 23:23 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