[gelöst] Stringgrid Selection

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
DAP
Beiträge: 55
Registriert: Sa 15. Jan 2011, 00:14
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

[gelöst] Stringgrid Selection

Beitrag von DAP »

Hallo,

ich selectiere einen Bereich in einem Stringgrid per Programmcode wie folgt:

Code: Alles auswählen

 
 
  StringGrid1.Selection := TGridRect(Rect(1,1,2,2));
  StringGrid1.Row := 2;
  StringGrid1.Col := 2;
 
 
Das läuft soweit. Wenn man jetzt versucht die Markierung mit der Kombination
Shift Taste und den Pfeiltasten zu erweitern, erkennt er nicht die bereits
selektierten Zellen.

Gibt es einen Schalter oder einen Befehl, um das korrekte Verhalten zu erzwingen?

Gruß DAP
Zuletzt geändert von DAP am Sa 8. Mär 2014, 20:17, insgesamt 1-mal geändert.

wp_xyz
Beiträge: 5142
Registriert: Fr 8. Apr 2011, 09:01

Re: Stringgrid Selection

Beitrag von wp_xyz »

Könnte ein Bug sein. Du solltest dieses Verhalten im BugTracker melden.

Als Zwischenlösung habe ich mit Hilfe des Debuggers folgendes gefunden: Offenbar ist das mit "Selection := ..." definierte Zellrechteck nur eine visuelle Auswahl,die sich anders verhält als wenn man sie mit Mausklick oder Shift erzeugt hat. Insbesondere wird in "SetSelection" das Flag "SelectActive" zurückgesetzt, so dass das Grid nicht mehr weiß, dass der Selektierungsmodus aktiv ist. Von Hand kann man das folgendermaßen korrigieren:

Code: Alles auswählen

 
type
  TMyGrid = class(TCustomDrawGrid);
 
procedure Grid_SelectCells(AGrid: TCustomDrawGrid; const ARect: TGridRect);
begin
  // erste Ecke der Auswahl
  AGrid.Row := ARect.Left;
  AGrid.Col := ARect.Top;
  // Selektierungsmodus aktivieren
  TMyGrid(AGrid).SelectActive := true;
  // zweite Ecke der Auswahl
  AGrid.Row := ARect.Right;
  AGrid.Col := ARect.Bottom;
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
  Grid_SelectCells(StringGrid1, TGridRect(Rect(1,1, 2,2)));
end;
 

DAP
Beiträge: 55
Registriert: Sa 15. Jan 2011, 00:14
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: Stringgrid Selection

Beitrag von DAP »

Hallo wp_xyz,

vielen Dank, Deine Lösung funktioniert.

Einen Bugreport habe ich noch nie erstellt, ist
das kompliziert und wie geht das?

Danke nochmals für die superschnelle Lösung.

DAP

wp_xyz
Beiträge: 5142
Registriert: Fr 8. Apr 2011, 09:01

Re: Stringgrid Selection

Beitrag von wp_xyz »

Du gehst auf http://mantis.freepascal.org, meldest dich an und klickst dann auf "Report an issue". Da beschreibst du das Problem und wie man es nachvollziehen kann. Ähnlich wie hier. Dann solltest du üblicherweise ein Demo-Projekt (*.pas, *.lfm, *.lpi, *.lpr als zip) anfügen (hier: Formular mit Grid, im FormCreate dein Code aus dem ersten Posting) and erklären, wie man den Fehler erzeugen kann. Auch meinen Code als temporäre Lösung erwähnen. Das alles auf Englisch. Warnung: die Seite ist ziemlich gewöhnungsbedürftig, vor dem Abschicken den Report mindestens 3x durchlesen, man hat hinterher keine Möglichkeit mehr etwas zu korrigieren, und kann nur noch weitere Notizen anhängen.

Wenn's dir zu kompliziert ist, kann ich es aber auch für dich erledigen.

wp_xyz
Beiträge: 5142
Registriert: Fr 8. Apr 2011, 09:01

Re: Stringgrid Selection

Beitrag von wp_xyz »

Ich habe den Bug-Report jetzt doch selber geschrieben, weil ich auch gleich einen Patch anfügen konnte (Entfernen einer Zeile aus grids.pas): http://mantis.freepascal.org/view.php?id=25835.

DAP
Beiträge: 55
Registriert: Sa 15. Jan 2011, 00:14
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: Stringgrid Selection

Beitrag von DAP »

wp_xyz hat geschrieben:Ich habe den Bug-Report jetzt doch selber geschrieben, weil ich auch gleich einen Patch anfügen konnte (Entfernen einer Zeile aus grids.pas): http://mantis.freepascal.org/view.php?id=25835.
vielen dank wp_xyz, dass hätte ich nicht so hinbekommen.

DAP

wp_xyz
Beiträge: 5142
Registriert: Fr 8. Apr 2011, 09:01

Re: [gelöst] Stringgrid Selection

Beitrag von wp_xyz »

Und schon ist der Bug behoben.

Wenn ich da an meine Bug-Reports denke, die ich für Delphi geschrieben habe...

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: [gelöst] Stringgrid Selection

Beitrag von Christian »

Ich glaub mein Record war mal bei 4 minuten vom absenden des reports bis zum schliessen desselbigen ;) (und den bug hab nicht ich behoben)
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Antworten