Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi FMX: Stringgrid (https://www.delphipraxis.net/185648-fmx-stringgrid.html)

sephraina 26. Jun 2015 19:52

FMX: Stringgrid
 
Eine Frage zu StringGrid in Firemonkey:

also bei einem StringGrid im VCL kann ich locker den Wert einer Zelle auslesen. bei FMX-Stringgrid gibts aber das Stringgrid.rows nicht.

Wie muss ich das machen damit ich beim anklicken einer bestimmten Zelle dessen Koordinaten (Sprich col und row) rausbekomme?

Danke und Gruss

Seph

Edit: die Column bekomme ich mit: Stringgrid1.ColumnIndex

sephraina 26. Jun 2015 20:18

AW: FMX: Stringgrid
 
Gelöst:

Steht natürlich wieder mal niergends!

Column:
Delphi-Quellcode:
Stringgrid1.ColumnIndex

Row:
Delphi-Quellcode:
stringgrid1.Selected
!!???

habe es im
Delphi-Quellcode:
procedure TForm2.StringGrid1DblClick(Sender: TObject);
ausprobiert.

Warum .selected aber nur für die Row ist und die Column anders ausgelesen werden muss ist mir schleierhaft.

sephraina 29. Jun 2015 19:20

AW: FMX: Stringgrid
 
Ich hab gesucht und gesucht, aber gefunden hab ich nichts... :(:(:(

Ich möchte die selektierte Zeile löschen. Also wie ich die Zeile rausbekomme weiss ich jetzt, aber wie kann ich sie löschen? -Es gibt verschiedene Beispiele in DP und im Netz, aber die sind alle für die VCL-Stringgrids.

Wenn es nicht anders geht wechsle ich auch auf TGrid (aber hier habe ich zum löschen auch nichts gefunden...), obwohl da das Befüllen und Rauslesen der Einzelnen Zellen viel zu umständlich ist!

Warum gibts in Firemonkey nicht was gescheites? Oder eben halt die gleichen Funktionen wie in VCL-Stringgrid?!? :gruebel: :x *Frust* :(

Harry Stahl 29. Jun 2015 21:09

AW: FMX: Stringgrid
 
Das kannst Du wie in der VCL machen, z.B. so:

Delphi-Quellcode:
Procedure DeleteRowAt (var sg:TStringGrid; F: LongInt);
var
  R, C: LongInt;
begin
  if sg.RowCount > 1 then begin

    if F > sg.Rowcount-1 then exit;

    if F <> sg.RowCount-1 then begin
      sg.BeginUpdate;
      for R := F to sg.RowCount-2 do begin
        for C := 0 to sg.ColumnCount-1 do begin
          sg.cells[C,R] := sg.Cells[C,R+1];
        end;
      end;
      sg.EndUpdate;
    end;

    sg.Rowcount := sg.RowCount - 1;

  end else begin
    sg.RowCount := 0;
  end;
end;
Generell sollte man aber seine Daten nicht im StringGrid verwalten. Auch das TStringrid dient i.d.R. nur zur Anzeige von Daten. Gut, wenn man es in einem Dialog verwendet, wo der Anwender ein paar Zeilen eingibt, kann man das natürlich für diese temporäre Aufgabe machen.

Zur Anzeige eignet sich noch besser das TGrid, das hat das schöne "OnGetValue"-Ereignis wo man dem Grid einfach sagt, welche Daten es anzeigen soll. Seine Daten hat man dann z.B. in einer Stringlist oder eben in einer richtigen Datenbank.


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