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 deaktivieren (https://www.delphipraxis.net/50747-stringgrid-markierung-deaktivieren.html)

Hallo_Thomas 30. Jul 2005 21:57


Stringgrid Markierung deaktivieren
 
Liste der Anhänge anzeigen (Anzahl: 2)
1.
Lässt sich etwas schwer erklären, das kleine gestrichelte(Siehe Bild1), wie kann mann die deaktivieren!


2.
Die Zweite Markierung hab ich so unsichtbar gemacht(Bild),

Delphi-Quellcode:
StringGrid1.Canvas.Brush.Color:=clgreen
aber kann man diese Markierung auch richtig deaktivieren?

Danke

SMO 30. Jul 2005 22:16

Re: Stringgrid Markierung deaktivieren
 
Das ist das "Focus Rectangle", wird normalerweise mit der Windows API Funktion DrawFocusRect gezeichnet.
Ich fürchte so ohne weiteres wirst du das nicht deaktivieren können. Wenn man die Eigenschaft DefaultDrawing des StringGrids auf False setzt, dann wird es nicht mehr gezeichnet - aber leider auch die festen Zellen, Markierungen und Strings nicht mehr. Das müsstest du dann alles selbst machen.

Hallo_Thomas 30. Jul 2005 22:38

Re: Stringgrid Markierung deaktivieren
 
Liste der Anhänge anzeigen (Anzahl: 1)
Yo,das klappt so weit, nur das Tabellenfeld(RowCount x ColCount) wird bis zum ersen Eintrag weis angezeigt.

omata 30. Jul 2005 23:06

Re: Stringgrid Markierung deaktivieren
 
Moin,

habe gerade kein Delphi zur Hand, aber mit

Delphi-Quellcode:
var GR:TGridRect;
begin
  with GR do begin
    GR.Left:=-1;
    GR.Right:=-1;
    GR.Top:=-1;
    GR.Bottom:=-1;
  end;
  StringGrid.Selection:=GR;
end;
sollte die Markierung eigentlich weg sein.

MfG
Thorsten

Hallo_Thomas 30. Jul 2005 23:23

Re: Stringgrid Markierung deaktivieren
 
Liste der Anhänge anzeigen (Anzahl: 1)
@omata
Irgendwie klappts nich wirklich,
also die Befehle werden zwar angenommen aber es ändert sich nicht alt zuviel.
bei DefaultDrawing:False
überhaupt nichts
bei DefaultDrawing:True
da ist beim Starten noch die blaue Markieung da, wenn ich auf die klicke, erscheint die andere Markierung, wenn ich jetzt einen Durchlauf bei Stringgrid mache, wird das Maximum um-1 überschritten.
Dies kann zwar durch Dragmode Automatic ausschalten, da erscheint dann immer wenn ich auf das Stringgrid klicke der CRnoDrop,kann das ein normaler Cursor sein?



hab hier mal das Beispielprogramm angehängt

Hallo_Thomas 30. Jul 2005 23:56

Re: Stringgrid Markierung deaktivieren
 
Ich hab das Problem mal eingekreist, wenn ich diese Zeilen lösche, tritt die Weiße Zeile nicht auf.


Delphi-Quellcode:
       Canvas.TextRect(Rect, Rect.Left + 2, Rect.Top + 2, cells[acol, arow]);
       Canvas.FrameRect(Rect);
       s:=Cells[ACol,ARow];
       Canvas.FillRect(Rect); // Zellfarbe zeichnen
allerdings funktioniert dann diese Procedur nicht
richtig
Delphi-Quellcode:
procedure TForm1.insertGridLine(Grid :TStringGrid; index: integer);
var i:integer;
begin
    Grid.RowCount :=Grid.RowCount +1;
    for i :=Grid.RowCount -2 downto index do
    begin
        Grid.Rows[i] :=Grid.Rows[i-1];
        Grid.Rows[i-1].clear;
    end;
end;

Keldorn 31. Jul 2005 07:06

Re: Stringgrid Markierung deaktivieren
 
Hallo

zu beiden Problem nutz bitte die Forensuche, das ist schon öfters behandelt wurden. da mit "noselection" (gridrect auf -1) führt eigentlich nur in Verbindung mit dem mausrad zu einer AV.
Delphi-Quellcode:
Canvas.TextRect(Rect, Rect.Left + 2, Rect.Top + 2, cells[acol, arow]);
       Canvas.FrameRect(Rect);
       s:=Cells[ACol,ARow];
       Canvas.FillRect(Rect); // Zellfarbe zeichnen
überleg mal ganz genau, was du hier machst. Insbesondere das fillrect am Ende. Tapezierst du erst und verputz du dann die Wand ;) ?.

Mfg Frank

Hallo_Thomas 31. Jul 2005 10:16

Re: Stringgrid Markierung deaktivieren
 
Yuhu ich habs

Delphi-Quellcode:
canvas.Brush.Color := clgreen;
canvas.FillRect(Rect);
canvas.TextOut(rect.Left + 2, rect.Top + 2, cells[acol, arow]);
zumindest so klappts

edmu 14. Feb 2007 04:47

Re: Stringgrid Markierung deaktivieren
 
hallo,
probiert es mal so.

Delphi-Quellcode:
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var GR:TGridRect;
begin
  with StringGrid1 do
  begin
    if gdFixed in State
      then Canvas.Brush.Color := FixedColor
      else Canvas.Brush.Color := Color;
    Rect.Top := Rect.Top + 1;
    Rect.Left := Rect.Left + 1;
    Rect.Right := Rect.Right - 1;
    Rect.Bottom := Rect.Bottom - 1;
    Canvas.FillRect(Rect);
    Canvas.TextOut(Rect.Left+2, Rect.Top+2, Cells[ACol, ARow]);
    if gdFocused in State
      then Canvas.DrawFocusRect(Rect);


  end;

end;

procedure TForm1.StringGrid1Exit(Sender: TObject);
var GR:TGridRect;
begin
    with GR do begin
    GR.Left:=0;
    GR.Right:=0;
    GR.Top:=0;
    GR.Bottom:=0;
    end;
    StringGrid1.Selection:=GR;

end;
beim verlassen des stringgrid das ereignis exit ausführen


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