Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Wert auslesen Stringgrid (https://www.delphipraxis.net/67778-wert-auslesen-stringgrid.html)

Murcielago82 19. Apr 2006 18:56


Wert auslesen Stringgrid
 
Hallo,

ich möchte bei einem StrinGrid die Eigenschaften jeder Zelle in einem array EigenchaftenGrid speichern. Bei Farbe und Schrift gelingt es mir auch. Nur bekomme ich es einfach nicht hin auch den String der in der Zelle stecht mit auszulösen. Hat einer eine Lösung? Schonmal danke!

Delphi-Quellcode:
type
 TEigenschaften = Record
   Farbe : TColor;
   Schrift : TFont;
var
EigenschaftenGrid : array [0..n-1,0..n-1] of TEigenschaften;

Gruß
Murcielago

s-off 19. Apr 2006 19:12

Re: Wert auslesen Stringgrid
 
Hallo,

den Inhalt einer bestimmten Zelle eines StringGrids erhältst Du über

Delphi-Quellcode:
TStringGrid.Cells[Spalte, Zeile] => String

Murcielago82 19. Apr 2006 19:22

Re: Wert auslesen Stringgrid
 
Hallo danke erstmal,

allerdings will ich für jede Zelle die Eigenschaften wie Schrift, Farbe und eben auch den Wert in einem Array abspeichern.
dies mache ich mit der FArbe so:

Delphi-Quellcode:
type
  TEigenschaften = Record
   Farbe : TColor;
   Schrift : TFont;
   Wert : ????; //Was kommt hier als Eigenschaft für wert rein????
var
  EigenschaftenGrid : array [0..n-1,0..n-1] of TEigenschaften;
begin

for i:=0 to n do
  begin
    for j:=0 to n do
    begin
      EigenschaftenGrid[i,j].farbe := clWhite;
      EigenschaftenGrid[i,j].wert := ??? // wie lese ich hier den wert aus?
    end;
  end;
end;
Hier will ich aber auch den Wert auslesen und dann an die gleiche Stelle im Array den wert/string speichern.

Gruß
M.

fkerber 19. Apr 2006 19:26

Re: Wert auslesen Stringgrid
 
Hi!

Es sollte ein String sein, aber wo genau ist denn hier eigentlich das Stringgrid?

Ciao Frederic

Murcielago82 19. Apr 2006 19:32

Re: Wert auslesen Stringgrid
 
Hallo,
das StringGrid erstelle ich hier:
Delphi-Quellcode:
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
VAR outRect : TRect;
    Text   : String;
begin
  Text:= StringGrid1.Cells[ACol, ARow];
  outRect := Rect;
 
  StringGrid1.Canvas.Brush.Color:=EigenschaftenGrid[ACol, ARow].Farbe;
  StringGrid1.Canvas.Fillrect(Rect);
  if EigenschaftenGrid[ACol, ARow].Schrift <> nil then
    StringGrid1.Canvas.Font.Assign(EigenschaftenGrid[ACol, ARow].Schrift);
 
  DrawText(StringGrid1.Canvas.Handle,PChar(Text),length(Text),outRect,DT_Center    
    or
    DT_SingleLine);
end;

fkerber 19. Apr 2006 19:33

Re: Wert auslesen Stringgrid
 
Hi!

Naja, erstellen würde ich das nicht nennen. Das da ist ja schon eine Methode des Stringgrids, oder?

Ciao Frederic

Murcielago82 19. Apr 2006 19:37

Re: Wert auslesen Stringgrid
 
Nicht :-(
war der Meinung das ich bei Drawcell beschreibe wie das Stringgrid erstellt werden soll?

fkerber 19. Apr 2006 19:42

Re: Wert auslesen Stringgrid
 
Hi!

Nein, DrawCell ist eine Methode des bereits erstellten Stringgrids. In ihr beschreibst du, wenn man so will, das Aussehen.

Am besten postest du mal größee QuellCode-Abschnitte, damit man auch mal mitbekommt, wo die ersten Auszüge aufgerufen werden.
So ganz hab ich den Sinn auch noch nicht verstanden. Der Wert steht doch im Stringgrid drin, warum soll er auch noch in das Record rein?


Ciao Frederic

Murcielago82 19. Apr 2006 19:50

Re: Wert auslesen Stringgrid
 
So,
also den Inhalt einer Celle in ein einziges array zu speichern habe ich schon hinbekommen. Nun dachte ich das ich zu diesen, die Eigenschaften irgendwie abspeichern kann, somit also pracktisch ein array spare. Also alle informationen der Celle(x,y) an einer Stelle in einem array habe (Schrift, Hintergrundfarbe,und eben den String der in der Zelle ist).
Also an der Position array(x,y) nach Wahl einen der 3 Wahlmöglichkeiten auslesen kann.
Ich hoffe ich habe mich nciht allzu blöd ausgedrückt!

fkerber 19. Apr 2006 19:53

Re: Wert auslesen Stringgrid
 
Hi!

Also du willst für jede Zelle des Stringgrids ein Record haben, in dem Wert, Farbe und Schrift drinstehen?

Und wo genau hängst du jetzt?
Du hast es doch für Farbe und Schrift hinbekommen.
Der "Wert" ist ein String und wie du an ihn rankommst steht doch weiter oben auch...


Ciao Frederic

Murcielago82 19. Apr 2006 19:58

Re: Wert auslesen Stringgrid
 
Hi,
schonmal danke für das Durchhaltevermögen.
Ich bekomme den Wert einfach nicht ins Record.

fkerber 19. Apr 2006 20:00

Re: Wert auslesen Stringgrid
 
Hi!

Die Frage ist und bleibt, wann du das machen willst. Rein theoretisch wäre ja ein einfaches belegen des Wertes (wie bei Farbe mit clWhite) so möglich:

Delphi-Quellcode:
type
  TEigenschaften = Record
   Farbe : TColor;
   Schrift : TFont;
   Wert : string; //Was kommt hier als Eigenschaft für wert rein???? 
var
  EigenschaftenGrid : array [0..n-1,0..n-1] of TEigenschaften;
begin

for i:=0 to n do
  begin
    for j:=0 to n do
    begin
      EigenschaftenGrid[i,j].farbe := clWhite;
      EigenschaftenGrid[i,j].wert := 'teststring'; // wie lese ich hier den wert aus? 
    end;
  end;
end;
Aber das wilst du wohl eher nicht, oder?

Ciao Frederic

Murcielago82 19. Apr 2006 20:04

Re: Wert auslesen Stringgrid
 
Ahh ich glaube ich habe es jetzt!
Delphi-Quellcode:
type
  TEigenschaften = Record
   Farbe : TColor;
   Schrift : TFont;
   Wert : string; //Was kommt hier als Eigenschaft für wert rein????
var
  EigenschaftenGrid : array [0..n-1,0..n-1] of TEigenschaften;
begin

for i:=0 to n do
  begin
    for j:=0 to n do
    begin
      EigenschaftenGrid[i,j].farbe := clWhite;
      EigenschaftenGrid[i,j].wert := StringGrid1.Cells[i,j]; // wie lese ich hier den wert aus? Fehlermeldung!!!
    end;
  end;
end;
Müsste doch so gehen oder?
Gruß

Leider bekomme ich so folgende Fehlermeldung:
Klasse besitzt keine Standardeigenschaft!

fkerber 19. Apr 2006 20:06

Re: Wert auslesen Stringgrid
 
Hi!

Ja, so liest du ihn aus, genau.
(Auch wenn ich denn Sinn immer noch nicht verstehe...)


Ciao Frederic

ilithas 7. Apr 2008 13:09

Re: Wert auslesen Stringgrid
 
Hallo,

habe grundlegend selbige Basis, allerdings würde ich gern die Eigenschaften des Stringgrids, welches immer wieder dynamisch via DrawCell erstellt wird zur Laufzeit, wie z.B. die Breite, Höhe (klar Spalten und Zeilen beeinflussen) Hintergrundfarbe, Textfarbe und selbstverständlich auch den eigentlichen String 1zu1 im meinem Export in dem ExcelSheet abbilden.

D.h. ich habe i-wann zur Laufzeit ein Stringgrid, welches mir Daten anzeigt. Diese Daten variiren, da ich durch divesre Radio- und Check-Buttons den Inhalt des Stringgrids verändern kann, aber nach dem klicken auf den Export Button, und der Vergabe eines Dateinamens möchte ich in der Excel Datei die Farbgebung, die Grössen und Höhen der Zellen, sowie ALLES andere identisch wiederfinden.

Kann mir da jmd Info drüber geben. Um Missverständnisse vorzubeugen, habe bereits alle Threads mit den Schalgwörten Stringgrid und Drawcell, sowie Excel Export durchschaut, leider ohne produktives Ergebnis.

Vielen Dank!


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:44 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