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 Stringrid nur zur Anzeige (https://www.delphipraxis.net/53403-stringrid-nur-zur-anzeige.html)

Hansa 15. Sep 2005 15:46


Stringrid nur zur Anzeige
 
Hi,

folgendes Problem : habe ein Stringgrid, welches mit Daten gefüllt werden soll. Editiert werden soll nichts. Wird es angezeigt, dann ist die erste Zelle blau hinterlegt und ich kann nicht Blättern mit den Funktionstasten. Klicke ich mit der Maus eine beliebige Zelle an, dan geht das, ist aber überflüssig. SetFocus usw. bringt keine Veränderung. Wer weiß mehr ?

kiar 15. Sep 2005 15:53

Re: Stringrid nur zur Anzeige
 
hallo Hansa.

suche benutzt und das erhalten:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
const KeineSelection : TGridRect = (left:-1;top:-1;right:-1;bottom:-1);
begin
  StringGrid1.Selection := KeineSelection;
end;
raik

Hansa 15. Sep 2005 18:58

Re: Stringrid nur zur Anzeige
 
Moin Raik,

vielen Dank für den Hinweis auf die Suche. 8) Mit Hilfe der Hilfe :mrgreen: habe ich es nun hingekriegt, daß ein Bereich des Stringgrids blau unterlegt ist. Das nützt mir aber nichts. Ich brauche den Zustand, so wie wenn im Grid eine Zelle angeklickt wird. Die ist dann dünn umrandet, nicht blau unterlegt und ich kann Pfeil und Blättertasten benutzen. Außerdem bleibt das Grid in der letzten Zeile stehen. Eventuell muß ich die Positionierung für Zeile 1 haben.

kiar 15. Sep 2005 19:03

Re: Stringrid nur zur Anzeige
 
Moin Hansa,

bei mir klappt das bestens , kein unterlegtes blau und die zellen werden gestrichelt umrandet.
habe es mit Delphi 5 gemacht, verstehe ich nicht, das es bei dir nicht klappt.

grüsse aus dem KoffeeShop :mrgreen:

raik

Hansa 17. Sep 2005 13:14

Re: Stringrid nur zur Anzeige
 
Raiks Tip geht so leider nicht (D7 Pro). Mit Selection kann ich zwar ein paar Zellen markieren, aber sonst anscheinend nichts. Da das Grid nur zur Anzeige dient, ist das aber völlig überflüssig. :mrgreen: Die Positionierung auf 1. Zeile geht mit Col := 1 und Row := 1 Den Focus erhält diese Zelle aber nicht. Insofern reagiert auch die Tastatur nicht, es sei denn ich klicke mit der Maus explizit auf das Grid. 8)

marabu 17. Sep 2005 14:07

Re: Stringrid nur zur Anzeige
 
Hallo Hansa,

damit der Benutzer das StringGrid auf deinem Formular nicht erst mit der Maus anklicken muss, kannst du das StringGrid im Object Inspector zum ActiveControl der Form machen. Damit grundsätzlich keine blaue Selektion zu sehen ist, musst du DefaultDrawing auf FALSE setzen und das Ereignis OnDrawCell() bedienen:

Delphi-Quellcode:
procedure TDemoForm.StringGridDrawCell(Sender: TObject; ACol,
  ARow: Integer; Rect: TRect; State: TGridDrawState);
begin
  with StringGrid do
  begin
    if gdFixed in State
      then Canvas.Brush.Color := FixedColor
      else Canvas.Brush.Color := Color;
    Canvas.FillRect(Rect);
    Canvas.TextOut(Rect.Left, Rect.Top, Cells[ACol, ARow]);
    if gdFocused in State
      then Canvas.DrawFocusRect(Rect);
  end;
end;
Ein Nachteil von so einem StringGrid (r/o und kein area select) ist auf jeden Fall, dass du den Benutzer beim Arbeiten mit Copy & Paste behinderst.

Grüße vom marabu

kiar 17. Sep 2005 14:16

Re: Stringrid nur zur Anzeige
 
Moin Hansa,

wir drehen uns im Kreis. Ich schreibe mal das in reinen Text, was du versucht hast in deinem ersten Post zu erklären:

also
1. du willst ein Stringgrid nur zur anzeige
2. du möchtest nicht, das die erste Zeile im Grid blau hinterlegt ist
3. du möchtest mit den Richtungstasten durch dein Grid durchhetzen :mrgreen:

wenn ich das richtig analysiert habe, dann macht der Quelltext von oben genau das :mrgreen:

Raik


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