[gelöst] Scrollbars zur Designzeit ausblenden

Rund um die LCL und andere Komponenten
Antworten
Socke
Lazarusforum e. V.
Beiträge: 3178
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

[gelöst] Scrollbars zur Designzeit ausblenden

Beitrag von Socke »

Hallo,
Ich bastel gerade (immer noch) an meinem Kalender.
Da die Zeilenhöhe und Spaltenbreite dynamisch an die Control-Größe angepasst wird (d.h. die Zeilen und Spalten füllen das Control komplett aus), sind Scrollbars eher hinderlich. Diese überdecken einen Teil des Controls. Ohne diese wird alles komplett angezeigt. Deshalb habe ich mir überlegt, diese zu deaktivieren. Lösung:

Code: Alles auswählen

constructor TCustomGridCalendar.Create (AOwner: TComponent);
begin
{...}
  Self.ScrollBars := ssNone;
end;
Das ganze funktioniert zur Laufzeit auch wunderbar. Jedoch werden sie zur Designzeit immer noch angezeigt, verschwinden aber zur Laufzeit.
Das ganze ist zwar zur Funktion nicht weiter störend, irritiert aber ein bisschen.

Kennt jemand eine Lösung?
MfGSocke
Zuletzt geändert von Socke am Do 30. Okt 2008, 20:12, insgesamt 1-mal geändert.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

slai
Beiträge: 211
Registriert: Fr 27. Apr 2007, 17:36
Wohnort: Zürich
Kontaktdaten:

Re: Scrollbars zur Designzeit ausblenden

Beitrag von slai »

Hy socke

nimmt mich nur wunder: wieso nimmst du nicht die TCalendar Komponente um die Daten anzuzeigen?
Windows 7, Lazarus 0.9.28.2 fpc 2.2.4, Firebird 2.1, Zeoslib 6.6.6-stable

Socke
Lazarusforum e. V.
Beiträge: 3178
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Scrollbars zur Designzeit ausblenden

Beitrag von Socke »

slai hat geschrieben:nimmt mich nur wunder: wieso nimmst du nicht die TCalendar Komponente um die Daten anzuzeigen?
Schon mal versucht verschiedene Tage (die nicht zusammenhängen) in verschiedenen Farben zu highlighten? kurz gesagt: es geht nicht.
Ich hatte mir mal einen Kalender für Delphi geschrieben (von TCalendar abgeleitet). Für die LCL hab ich dann neu angefangen (von TCustomGrid) weil keine DrawCell-Methode vorhanden war. Man hat also keine Möglichkeit die Anzeige zu beeinflussen. Außerdem hat TCalendar immer eine feste Breite/Höhe.

Und jetzt versuche ich einen kleinen Schönheitsfehler zu beheben...

MfG Socke
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Benutzeravatar
theo
Beiträge: 10869
Registriert: Mo 11. Sep 2006, 19:01

Re: Scrollbars zur Designzeit ausblenden

Beitrag von theo »

Vielleicht geht's so, aber ich hab die Kompo nicht installiert:

Code: Alles auswählen

TMyGrid=class(TCustomGrid)
  published
    property ScrollBars: TScrollStyle read FScrollBars write SetScrollBars default ssNone; //ssNone statt ssAutoBoth wie in TCustomGrid
  end;

Socke
Lazarusforum e. V.
Beiträge: 3178
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Scrollbars zur Designzeit ausblenden

Beitrag von Socke »

theo hat geschrieben:Vielleicht geht's so, aber ich hab die Kompo nicht installiert:

Code: Alles auswählen

TMyGrid=class(TCustomGrid)
  published
    property ScrollBars: TScrollStyle read FScrollBars write SetScrollBars default ssNone; //ssNone statt ssAutoBoth wie in TCustomGrid
  end;
Der Ansatz, die Eigenschaft mit neuem Standardwert zu deklarieren ist gut! Es gibt nur ein paar seltsame Verhaltensweisen:
  • Die Scrollbars werden beim Einfügen in das Formular nicht angezeigt, aber eingeblendet, wenn Position und/oder Größe geändert wird
  • Zur Laufzeit sind sie sichtbar (auch wenn sie zur Designzeit nicht sichtbar waren
Die Lösung habe ich gefunden, in dem ich zum einen den Standardwert der Eigenschaft auf ssNone setzte (wie theo vorgeschlagen hatte) und im Constructor den Wert noch einmal explizit setzte (Self.Scrollbars := ssNone). Dadurch werden keine Scrollbars mehr angezeigt.

Danke und MfG Socke
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Antworten