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 ? |
Re: Stringrid nur zur Anzeige
hallo Hansa.
suche benutzt und das erhalten:
Delphi-Quellcode:
raik
procedure TForm1.FormCreate(Sender: TObject);
const KeineSelection : TGridRect = (left:-1;top:-1;right:-1;bottom:-1); begin StringGrid1.Selection := KeineSelection; end; |
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. |
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 |
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)
|
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:
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.
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; Grüße vom marabu |
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