AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi TMS TAdvStringGrid mehrere Zeilen markieren mit der Maus
Thema durchsuchen
Ansicht
Themen-Optionen

TMS TAdvStringGrid mehrere Zeilen markieren mit der Maus

Ein Thema von Kostas · begonnen am 12. Jan 2010 · letzter Beitrag vom 12. Jan 2010
Antwort Antwort
Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.095 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

TMS TAdvStringGrid mehrere Zeilen markieren mit der Maus

  Alt 12. Jan 2010, 00:19
Hallo Zusammen,

TMS TAdvStringGrid Version 4.6.0.0

das Problem vorab: wenn ich mit der linken Maus auf die erste Zeile klicke, die linke Maustaste
gedruckt halte und runter ziehe so das weitere Zeilen markiert werden, so werden sie zwar als
Markiert dargestellt, sind jedoch nicht markiert im Sinne von tgGrid.RowSelect[r]:=true;
Tippe ich jedoch jede einzelne Zeile mit gedruckert Strg-Taste, so werden sie markiert dargestellt
und sind auch aufgelistet in tgGrid.RowSelect[r].


Das Grid besteht aus drei Spalten und mehreren Zeilen.
Hab RowSelect eingestellt, so dass die komplette Zeile markiert ist, beim anklicken irgend einer Zelle.

Ich mochte schnell mehrere Zeilen marktieren, und Programmtechnisch die markierten Zeilen nach einer Aktion
einzeln wieder demarkieren. Das geht mit tgGrid.RowSelect[RowNo]:=false;
Allerdings nicht wenn ich die Zeilen nicht einzeln mit gedruckert Strg-Taste markiere.

Hat jemand eine Idee?

Gruß Kostas
  Mit Zitat antworten Zitat
exilant

Registriert seit: 28. Jul 2006
134 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: TMS TAdvStringGrid mehrere Zeilen markieren mit der Maus

  Alt 12. Jan 2010, 09:26
Versuchs mal mit "SelectedRowCount" und "SelectedRow[x]" also sowas wie

Delphi-Quellcode:
for i := 0 to grid.selectedrowcount -1 do begin
  grid.cells[0, grid.selectedrow[i]] := '->';
end;
Anything, carried to the extreme, becomes insanity. (Exilant)
  Mit Zitat antworten Zitat
Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.095 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

Re: TMS TAdvStringGrid mehrere Zeilen markieren mit der Maus

  Alt 12. Jan 2010, 10:41
Zitat von exilant:
Versuchs mal mit "SelectedRowCount" und "SelectedRow[x]" also sowas wie

Delphi-Quellcode:
for i := 0 to grid.selectedrowcount -1 do begin
  grid.cells[0, grid.selectedrow[i]] := '->';
end;
irgend wie führt kein Weg dort hin.
Wie gesagt, wenn ich die Zeilen mit gedruckter Strg-Taste markiere ist es kein Problem
die Selektierten Zeilen einzeln wieder abzuwehlen.

Interessant ist, ich markiere fünf Rows durch drüberziehen:
MessageDlg(IntToStr(Grid.SelectedRowCount), mtWarning, [mbOK], 0); >>zeigt 5 an
Grid.ClearRowSelect;
MessageDlg(IntToStr(Grid.SelectedRowCount), mtWarning, [mbOK], 0); >>zeigt 0 an

Die Rows sind jedoch optisch immer noch markiert.
Also sind die Rows irgend wie markiert und doch nicht.

Mache ich das gleiche indem ich die fünf Rows einzel markiere mit gedrucker Strg-Taste
sind die Rows danach auch demarkiert.

Hat jemand eine Idee?

Gruß Kostas
  Mit Zitat antworten Zitat
exilant

Registriert seit: 28. Jul 2006
134 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: TMS TAdvStringGrid mehrere Zeilen markieren mit der Maus

  Alt 12. Jan 2010, 11:04
Zitat von Kostas:
Interessant ist, ich markiere fünf Rows durch drüberziehen:
MessageDlg(IntToStr(Grid.SelectedRowCount), mtWarning, [mbOK], 0); >>zeigt 5 an
Grid.ClearRowSelect;
MessageDlg(IntToStr(Grid.SelectedRowCount), mtWarning, [mbOK], 0); >>zeigt 0 an
Mal ein Schuss ins blaue (ich kann hier gerade nicht testen): nach "grid.ClearRowSelect" noch ein "grid.invalidate" absetzen.
Klappt das?

gruss
Anything, carried to the extreme, becomes insanity. (Exilant)
  Mit Zitat antworten Zitat
Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.095 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

Re: TMS TAdvStringGrid mehrere Zeilen markieren mit der Maus

  Alt 12. Jan 2010, 11:09
Zitat von exilant:
Zitat von Kostas:
Interessant ist, ich markiere fünf Rows durch drüberziehen:
MessageDlg(IntToStr(Grid.SelectedRowCount), mtWarning, [mbOK], 0); >>zeigt 5 an
Grid.ClearRowSelect;
MessageDlg(IntToStr(Grid.SelectedRowCount), mtWarning, [mbOK], 0); >>zeigt 0 an
Mal ein Schuss ins blaue (ich kann hier gerade nicht testen): nach "grid.ClearRowSelect" noch ein "grid.invalidate" absetzen.
Klappt das?

gruss
nein leider nicht.

Delphi-Quellcode:
  MessageDlg(IntToStr(grid.SelectedRowCount), mtWarning, [mbOK], 0);
  grid.ClearRowSelect;
  grid.invalidate;
  MessageDlg(IntToStr(grid.SelectedRowCount), mtWarning, [mbOK], 0);
Die Rows sind immer noch "markiert"

Gruß Kostas
  Mit Zitat antworten Zitat
exilant

Registriert seit: 28. Jul 2006
134 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: TMS TAdvStringGrid mehrere Zeilen markieren mit der Maus

  Alt 12. Jan 2010, 14:11
Vielleicht hilf das hier.

Die Selektierung läst sich folgendermassen aufheben:

Delphi-Quellcode:

procedure TForm1.Unselect;
var t : tgridrect;
begin
   t.Left := MyGrd.col; t.Right := MyGrd.col;
   t.top := MyGrd.row; t.bottom := MyGrd.row;
   MyGrd.Selection := t;
end;

Danach ist nur noch die vorher angewählte Zelle selektiert.
Anything, carried to the extreme, becomes insanity. (Exilant)
  Mit Zitat antworten Zitat
Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.095 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

Re: TMS TAdvStringGrid mehrere Zeilen markieren mit der Maus

  Alt 12. Jan 2010, 15:38
Zitat von exilant:
Vielleicht hilf das hier.

Die Selektierung läst sich folgendermassen aufheben:

Delphi-Quellcode:

procedure TForm1.Unselect;
var t : tgridrect;
begin
   t.Left := MyGrd.col; t.Right := MyGrd.col;
   t.top := MyGrd.row; t.bottom := MyGrd.row;
   MyGrd.Selection := t;
end;

Danach ist nur noch die vorher angewählte Zelle selektiert.
Hallo exilant,
ich habe das Problem lösen können.

Es liegt an der Eigenschaft Look.
Office 2007, Windows Vista und Windows 7 entfernen die Auswahl nicht!
Alle andere Looks gehen wie z.B.: Windows XP

Mann sucht sich einen Wolf und dann ist es so etwas Super Gemeines.
Ob es jetzt ein Bug ist ober by Design der Komponente ist mich nicht klar.
Auf jeden Fall Fuck auf Vista und nehme XP Themes.


Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;
begin
  Memo1.lines.clear;
  for i := 1 to Grid.RowCount-1 do
  begin
    if Grid.RowSelect[i] then
    begin
      Grid.RowSelect[i]:=false;
      Memo1.lines.add(Grid.cells[1,i]);
    end;{if}
  end;

end;
Gruß kostas
  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 12:18 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