AGB  ·  Datenschutz  ·  Impressum  







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

FMX TStringgrid und Dataset

Ein Thema von ADelph · begonnen am 27. Aug 2012 · letzter Beitrag vom 29. Aug 2012
Antwort Antwort
ADelph

Registriert seit: 10. Aug 2009
91 Beiträge
 
Delphi 10.4 Sydney
 
#1

FMX TStringgrid und Dataset

  Alt 27. Aug 2012, 16:58
Hi,

ich kriege so langsam einen Hass auf FMX und StringGrids im Zusammenhang mit Datasets. Gut, ich probiere ja nur, denn ich möchte wissen, auf was ich mich einlasse, wenn ich auf XE2 etc. umstelle. Vieles scheint ansehnlicher zu sein. Aber einiges bringt mich schon jetzt auf die Palme.

Es war so schön einfach mit TDBGrid: Überschriften ausrichten war simpel, Spalten ausrichten war simpel, Zeilen Markieren oder farblich kennzeichnen war simpel, usw. usw.

Mit FMX kriege ich zur Zeit weder die Überschriften ausgerichtet, noch die Spalten überhaupt. Zeilen farblich zu markieren in Abhängigkeit eines Feldwertes kriege ich gar nicht hin. Und wenn ich auf die letzte Zeile eines StringGrids klicke, verschwindet die Selectmarkierung (aktuelle Zeile) und kommt auch nicht wieder, wenn ich darüberliegende Zeilen anklicke. Lediglich die horizontale Linie darüber wird blau statt grau. Wenn ich dann die erste Zeile anklicke, dann erscheint manchmal wieder der S-Balken (ich habe ShowSelectedCell auf false, damit ich das frühere dgRowSelect erhalte, weil ich die Werte der Datensätze nur anzeigen will). Klicke ich jedoch von Zeile zu Zeile immer in andere Zellen, dann wird immer der S-Balken angezeigt...

Im Internet finde ich eine ganze Reihe von Anregungen, aber bislang nicht im Zusammenhang mit Datasets - oder nur die ganz einfachen Sachen, z.B. wie ein DS an ein Grid angebunden wird.

Hat jemand Hinweise, Ideen, Anregungen? Ich würde ja gern auf FMX umstellen, aber so...

Grüße
Wir versuchen in fehlerbehafteten Systemen mit fehlerhaften Entwicklungsumgebungen fehlerfreie Software zu erstellen - das kann nicht klappen
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: FMX TStringgrid und Dataset

  Alt 27. Aug 2012, 17:00
Besser auf XE3 warten, denn mit FM² werden ja Änderungen kommen
Markus Kinzler
  Mit Zitat antworten Zitat
greenmile

Registriert seit: 17. Apr 2003
1.107 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: FMX TStringgrid und Dataset

  Alt 29. Aug 2012, 08:58
Die Grid/Stringlist Implementierung ist meiner Erfahrung nach die ver-bug-teste in FM, da hast Du Dir das Paradebeispiel rausgesucht. Mit den Sourcen ab Werk wirst Du es kaum stabil hinbekommen und ein Update wird es, denke ich, nicht mehr geben.

Ich würde auch auf XE3 warten, in XE2 hat das kaum Sinn. Ich habe auch einiges gekämpft, musste allerdings auch in den Sourcen rumpfuschen damit einiges läuft.
  Mit Zitat antworten Zitat
ADelph

Registriert seit: 10. Aug 2009
91 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: FMX TStringgrid und Dataset

  Alt 29. Aug 2012, 15:01
Hi,

ok, dann werde ich auch warten...konnte ja nicht wissen, dass ich ins größte Wespennest gestoßen bin...

Grüße
Wir versuchen in fehlerbehafteten Systemen mit fehlerhaften Entwicklungsumgebungen fehlerfreie Software zu erstellen - das kann nicht klappen
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.006 Beiträge
 
Delphi 12 Athens
 
#5

AW: FMX TStringgrid und Dataset

  Alt 29. Aug 2012, 15:17
Ich habe mir diesen Helper gebaut, um die nötigsten Dinge hinzubekommen. Vielleicht hilft es dir ja etwas weiter. Die Implementation musst du noch an deine Bedürfnisse anpassen. Es war halt nur als Übergangslösung bis zu einem ausreichend funktionierenden Grid gedacht.


Delphi-Quellcode:
type
  TCustomGridHelper = class helper for TCustomGrid
  protected
    function FindHeader(AParent: TFmxObject): THeader;
  public
    procedure AdjustGrid;
    procedure AdjustStretchColumn(ACol: Integer);
    function GetHeader: THeader;
    property Header: THeader read GetHeader;
  end;


procedure TCustomGridHelper.AdjustGrid;
var
  edt: TEdit;
  headerItem: THeaderItem;
  I: Integer;
  J: Integer;
begin
  if Header <> nil then begin
    for I := 0 to Header.Count - 1 do begin
      headerItem := Header.Items[I];
      if headerItem <> nil then begin
        if I < 2 then
          headerItem.TextAlign := TTextAlign.taLeading
        else
          headerItem.TextAlign := TTextAlign.taTrailing;
        headerItem.Font.Size := 12;
      end;
    end;
  end;
  for I := 0 to ColumnCount - 1 do begin
    for J := 0 to RowCount - 1 do begin
      edt := (Columns[I].CellControlByRow(J) as TEdit);
      if edt <> nil then begin
        if I < 2 then
          edt.TextAlign := TTextAlign.taLeading
        else
          edt.TextAlign := TTextAlign.taTrailing;
        edt.Font.Size := 12;
      end;
    end;
  end;
end;

procedure TCustomGridHelper.AdjustStretchColumn(ACol: Integer);
var
  I: Integer;
  W: Single;
begin
  W := 5 + VScrollBar.Width;
  for I := 0 to ColumnCount - 1 do begin
    if I = ACol then Continue;
    if Columns[I].Visible then
      W := W + Columns[I].Width;
  end;
  Columns[ACol].Width := Width - W;
end;

function TCustomGridHelper.FindHeader(AParent: TFmxObject): THeader;
var
  I: Integer;
begin
  for I := 0 to AParent.ChildrenCount - 1 do begin
    if AParent.Children[I] is THeader then
      Exit(THeader(AParent.Children[I]));
  end;
  for I := 0 to AParent.ChildrenCount - 1 do begin
    result := FindHeader(AParent.Children[I]);
    if result <> nil then
      Exit(result);
  end;
  result := nil;
end;

function TCustomGridHelper.GetHeader: THeader;
begin
  Result := FindHeader(Self);
end;
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  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 08:06 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