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 StringGrid - Markierung ändert sich nicht (https://www.delphipraxis.net/11720-stringgrid-markierung-aendert-sich-nicht.html)

himitsu 12. Nov 2003 14:34


StringGrid - Markierung ändert sich nicht
 
Hi ihr,

hab immer noch ein kleines Problem mit StringGrid.

Ich ändere zur Laufzeit StringGrid.Options.
Delphi-Quellcode:
StringGrid5.Options := StringGrid5.Options - [goRangeSelect, goRowSelect] + [goEditing];
{oder}
StringGrid5.Options := StringGrid5.Options - [goRangeSelect, goRowSelect];
Nach dieser Änderung sollte normalerweis nur noch das 1. Feld in der aktiven Zeile markiert sein.

Es bleibt aber die aktuelle Markierung so lange erhalten bis ich selber die Markierung ändere. Danach ist dann auch wirklich nur noch 1 Feld markiert.
Hab auch StringGrid.Selection abgefragt. Aber auch dort steht noch die angezeigte Markierung drin.

Diese gepunktete Markierungslinie wird geändert, aber das blaue bleibt.

Aus irrgend einem Grund kann ich auch noch StringGrid.Selection keine Werte zuweisen.
Zitat:

Der linken Seite kann nichts zugewiesen werden
Neu zeichnen und aktualiesieren hilft auch nicht.
Delphi-Quellcode:
StringGrid5.Repaint;
StringGrid5.Update;
StringGrid5.Refresh;

{und sogar hiermit versucht}
StringGrid5.Realign;



Beim zurücksetzten geht es, oder fällt zumindestens nicht auf.
Delphi-Quellcode:
StringGrid5.Options := StringGrid5.Options + [goRangeSelect, goRowSelect] - [goEditing];

huberlix 12. Nov 2003 17:32

Re: StringGrid - Markierung ändert sich nicht
 
StringGrid1.Selection:= TGridRect(Rect(2,1,2,1));
==Zeile1, Spalte2
Oder meinst du mit "Wert zuweisen", was in die Zelle schreiben? Das must du über Col und Row machen.

Gruß Bernd

himitsu 12. Nov 2003 18:22

Re: StringGrid - Markierung ändert sich nicht
 
Ich hatte es in mehreren Versionen Versucht:
Delphi-Quellcode:
StringGrid1.Selection := TGridRect(Rect(2, 1, 2, 1));

StringGrid1.Selection.Left := 2;
StringGrid1.Selection.Top := 1;
StringGrid1.Selection.Right := 2;
StringGrid1.Selection.Bottom := 1;

StringGrid1.Selection.TopLeft := TGridCoord(Point(2, 1));
StringGrid1.Selection.BottomRight := TGridCoord(Point(2, 1));
Und über all heißt es, das der linken Seite nichts zuweisbar ist.

APP 12. Nov 2003 19:20

Re: StringGrid - Markierung ändert sich nicht
 
Hallo Himitsu,
der Tip von huberlix sollte eigentlich funktionieren.

Zitat:

Zitat von OH
property Selection: TGridRect;

Beschreibung

Mit Selection können Sie einen Zellbereich auswählen. Selection enthält entweder für erste Spalte, die erste Zeile, die letzte Spalte und die letzte Zeile im Gitter oder die Zeilen- und Spaltenkoordinaten der linken oberen und der rechten unteren Zelle des ausgewählten Bereichs.

Selection kann nur mehrere Zellen repräsentieren, wenn Options den Wert goRangeSelect enthält.

Zitat:

Zitat von OH
Der folgende Programmcode markiert das Recheck, das die Zeilen 1 bis 4 und die Spalten 2 und 3 enthält.

procedure TForm1.Button1Click(Sender: TObject);
var
myRect: TGridRect;
begin
myRect.Left := 3;
myRect.Top := 1;
myRect.Right := 2;
myRect.Bottom := 4;
DrawGrid1.Selection := myRect;
end;

Hast Du goRangeSelect ausgewählt?

himitsu 12. Nov 2003 20:56

Re: StringGrid - Markierung ändert sich nicht
 
Egal ob goRangeSelect ausgewählt ist oder nicht, der Compiler mekert immer rum. Hab's sogar in einem neuen/leeren Form versucht - ging auch nicht.
Das ist ja mein Prob, egal was ich versuche, es geht einfach nichts. :(

huberlix 13. Nov 2003 13:37

Re: StringGrid - Markierung ändert sich nicht
 
Ok, ich hab jetzt ein StringGrid und nen Button auf die Form gepappt.
Dann in Button1Click die Selection reingeschrieben. Funktioniert einwandfrei.
Hier mal die ganze Unit. Vergleich mal genau! Ich denk der Fehler liegt irgendwo anders.

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids;

type
  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  stringgrid1.Selection:=TGridRect(Rect(3,3,3,3));
end;

end.

himitsu 13. Nov 2003 13:57

Re: StringGrid - Markierung ändert sich nicht
 
Ich weis ja selber das es gehen sollte, aber aus irrgend einem Grund geht es plötzlich nicht mehr.

Installiere jetzt erst mal alles neu, mal seh'n was passiert.

himitsu 13. Nov 2003 14:30

Re: StringGrid - Markierung ändert sich nicht
 
Keine Ahnung wieso, aber jetzt geht es wieder.
Hatte doch schon mal neu installiert.

Dennoch Danke für eure Hilfe :firejump:


Falls doch noch jemandem einfällt woran das gelegen haben kann.
Mich würde es immer noch interresieren, denn gelösst ist es ja nicht so richtig.


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