Delphi-PRAXiS
Seite 3 von 4     123 4      

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 selection Problem ! (https://www.delphipraxis.net/25150-stringgrid-selection-problem.html)

sakura 2. Jul 2004 14:48

Re: Stringgrid selection Problem !
 
Hm, keine Antwort ist auch eine Antwort :? Aber, für den Fall, daß Du mit der Maus selektierst, so ist mir aufgefallen, mußt Du noch folgende Events füllen: OnMouseMove, OnMouseDown, OnMouseUp

Delphi-Quellcode:
procedure TForm1.StringGrid1MouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  if Sender = nil then
    Exit;
  if not (Sender is TStringGrid) then
    Exit;
  FMouseSelects := True;
end;

procedure TForm1.StringGrid1MouseMove(Sender: TObject; Shift: TShiftState;
  X, Y: Integer);
begin
  if Sender = nil then
    Exit;
  if not (Sender is TStringGrid) then
    Exit;
  if not FMouseSelects then
    Exit;
  with Sender as TStringGrid do
  begin
    Update;
    Invalidate;
  end;
end;

procedure TForm1.StringGrid1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if Sender = nil then
    Exit;
  if not (Sender is TStringGrid) then
    Exit;
  FMouseSelects := False;
end;
Desweiteren muss die Variable FMouseSelects: Boolean; im Form deklariert werden.

...:cat:...

sakura 2. Jul 2004 14:49

Re: Stringgrid selection Problem !
 
Liste der Anhänge anzeigen (Anzahl: 1)
Noch mal ich :mrgreen: Ich habe das Sample vergessen :roll:

...:cat:...

richard_boderich 2. Jul 2004 15:04

Re: Stringgrid selection Problem !
 
ok sakura,

also ich versuchs jetz nochmal zu erklaeren, deine routiene lauft nich, ich denke aber
das du das falsche meinst

ich versuchs jetz mal anders ,ok also :

1.

wenn mouse down im stringgrid , dann schaue in welcher zeile (row a) du bist und selectiere alle felder von aktuellem colwert bis colcount vom stringgrid (erste zeile)

2.

wenn mousemove bzw. mouse up, dann schaue in welcher zeile (row b) du bist , wobei (row b > row a sein muss) und selectiere alle felder
von 0 bis colwert (letzte zeile);

3.

und dann selectiere auch noch das rechteck dazwischen (0,rowa+1) zu (colcount,rowb-1) (rechteckiger bereich)


markierung sieht dann so aus:

#=markiert

Delphi-Quellcode:
0000000####################  -> erste zeile
###########################  -> [rechteckiger bereich zwischen...]
###########################  -> [...zeile 1 und letzter zeile....]
########0000000000000000000  -> letzte zeile
000000000000000000000000000
000000000000000000000000000
000000000000000000000000000
Ps: ich denke dein code kann nicht funktionieren weil denkfehler , weil der selectmode des stringgrid noch mit aktiv ist
wenn du naenlich beim markieren nur eine zeile nach unten gehst, dann selectiert , das grid bei deiner routine
auch die 2 zeile von der colposition an und nicht von 0 wie in der darstellung oben, eventueller Loesungsweg: bei grid option: rangeselect auf false
und markierung komplett selber zeichnen

hoffe jetz , das du mich verstehst

richard_boderich 2. Jul 2004 15:19

Re: Stringgrid selection Problem !
 
hallo sakura,

dein beispiel lauft jetzt richtig, muss daran gelegen haben, das ich immer versucht hab mit der maus zu selektieren
,allerdings ist da ein unschoenes grafisches zucken des markierten bereichs,wenn man die maus beim markieren bewegt, gibst ne moeglichkeit ,
das noch zu verbessern ? :) :zwinker:

sakura 2. Jul 2004 15:24

Re: Stringgrid selection Problem !
 
Zitat:

Zitat von richard_boderich
allerdings ist da ein unschoenes grafisches zucken des markierten bereichs, wenn man die maus beim markieren bewegt, gibst ne moeglichkeit,
das noch zu verbessern ? :) :zwinker:

Leider nicht so einfach. Da musst Du wohl die gesamte Komponente ändern :?

...:cat:...

richard_boderich 2. Jul 2004 16:13

Re: Stringgrid selection Problem !
 
Das ist typischer borland mist, jetz kann ich 70 prozent meines codes wegschmeissen
und von vorn anfangen. bloede oop, da war turbo pascal um laengen besser, wenn die
wenigstens in erwaegung gezogen hatten , ne eigenschaft "selectmode" für die
dämliche stringgrid kompo zu machen in der ich den selektionsstil waehlen hatte koennen, aber
nee..

was nutzt es wenn du in 2 min den code zusammenklicken kannst, und dann bei solch
simplen dingen passen must. auf der anderen seite hatte ich schon mal faelle,
in dehnen ich 2 tage gesaessen hab , um die nichterwuenschten funktionen und
deren verhalten in kompos rueckgaengig zu machen, was ist den das fuer ne logic,

laenger damit zuzubringen unerwuenschte verhalten zu unterdrueckten, als
sich dem eingentlichen problem zu widmen!

ich kann dazu nur sagen : :kotz:

so und wenn ihr mich jetz aus dem forum schmeissen wollt, is mir das jetz auch egal

Mirilin 2. Jul 2004 16:42

Re: Stringgrid selection Problem !
 
:hi:


Dann wünsch ich dir viel Spass in der non-VCL-Ecke :zwinker:
Die VCL ist nicht perfekt, aber sie nimmt einem eine Menge Arbeit ab.


Schau sonst mal noch auf Torry vorbei, vielleicht findest Du da eine StringGrid-Kompostente die Deine Erwartungen erfüllt.

Und in der jvcl gibts auch einige gute Sachen.



mfg Tobias

richard_boderich 2. Jul 2004 22:05

Re: Stringgrid selection Problem !
 
hacke den tread mal ab,
antwortet sowieso keiner mehr

Niko 4. Jul 2004 20:01

Re: Stringgrid selection Problem !
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von richard_boderich
antwortet sowieso keiner mehr

Doch ich :wink: - bin leider nicht eher dazu gekommen.

Zitat:

Zitat von richard_boderich
,allerdings ist da ein unschoenes grafisches zucken des markierten bereichs,wenn man die maus beim markieren bewegt, gibst ne moeglichkeit ,
das noch zu verbessern ?

Ja, ein vielleicht unschönes aber wirkungsvolles
Delphi-Quellcode:
StringGrid.DoubleBuffered := true;
wirkt hier Wunder.

Ich hab außerdem auch mal ein bisschen mit dem StringGrid rumgespielt und eine andere Lösung entwickelt. Benötigt zwar auch das DoubleBufferd, wirkt aber für mich insgesamt ein bisschen weniger hakelig als Sakuras Variante (die ich hier keinesfalls schlecht machen will :angle2: ). Projekt im Anhang.

[EDIT]Fehler im Attachment ausgebessert[/EDIT]

richard_boderich 4. Jul 2004 20:25

Re: Stringgrid selection Problem !
 
hi Niko,


was bewirkt den die anweisung double buffer genau ? und warum ist sie unschoen ???

hab grad dein file geladen,will gleich ma probieren :-D
nochmal vielen dank, waere toll wenn es wirklich hilft


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:42 Uhr.
Seite 3 von 4     123 4      

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