AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Prüfen ob Scrollbar aktiviert

Ein Thema von EWeiss · begonnen am 30. Jun 2011 · letzter Beitrag vom 30. Jun 2011
Antwort Antwort
Seite 2 von 3     12 3   
Thom

Registriert seit: 19. Mai 2006
570 Beiträge
 
Delphi XE3 Professional
 
#11

AW: Prüfen ob Scrollbar aktiviert

  Alt 30. Jun 2011, 14:17
Schau mal unter meinen Projekten.
Werde ich machen!

Aber mir ist gerade etwas anderes aufgefallen:
In einem TMemo werden bei ScrollBars:=ssBoth immer beide Leisten angezeigt, auch wenn sie nicht notwendig sind (dann eben nur deaktiviert). TMemo kennt ja irgendwie kein automatisches Ein- und Ausblenden der Scrollbars.

Insofern ist mein Vorschlag, die Clientgröße des Fensters zu testen, völliger Unsinn, da die Leisten immer da sind...

Was ich aber jetzt gefunden habe:
SCROLLBARINFO
Aus dem Parameter rgstate lassen sich Rückschlüsse darauf ziehen, ob ein Element (oder die gesamte Scrollbar) zum Beispiel unsichtbar (STATE_SYSTEM_INVISIBLE) oder deaktiviert (STATE_SYSTEM_UNAVAILABLE) ist.

Ist wenig Text im Memo enthalten und die vertikale Scrollbar überflüssig, sieht der Status so aus:
Delphi-Quellcode:
ScrollBarInfo.rgstate[0]=STATE_SYSTEM_UNAVAILABLE; //gesamte Scrollbar deaktiviert
ScrollBarInfo.rgstate[1]=STATE_SYSTEM_UNAVAILABLE; //oberer Button deaktiviert
ScrollBarInfo.rgstate[2]=STATE_SYSTEM_UNAVAILABLE; //Page up-Bereich deaktiviert
ScrollBarInfo.rgstate[3]=STATE_SYSTEM_STATE_SYSTEM_INVISIBLE; //verschiebbarer Button unsichtbar
ScrollBarInfo.rgstate[4]=STATE_SYSTEM_UNAVAILABLE; //Page down-Bereich deaktiviert
ScrollBarInfo.rgstate[5]=STATE_SYSTEM_UNAVAILABLE; //unterer Button deaktiviert
Wird die vertikale Scrollbar benötigt, ändert sich das so:
Delphi-Quellcode:
ScrollBarInfo.rgstate[0]=0; //gesamte Scrollbar ist aktiviert
//...
Vielleicht hilft Dir das weiter...
Thomas Nitzschke
Google Maps mit Delphi
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#12

AW: Prüfen ob Scrollbar aktiviert

  Alt 30. Jun 2011, 14:18
Zitat:
Ich weiss ja nicht was Du da machst aber in Deinem Grid funct es
Siehe erster Eintrag!

Bei meinem grid ist das normal weil die Scrollbar über CreateWindow erstellt wurde
und ich zu jederzeit Einfluss auf die Value nehmen kann.

Beim Memo geht das aber nicht oder aber du kannst mir sagen wo ich dort die Max Value einstellen kann.

gruss
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#13

AW: Prüfen ob Scrollbar aktiviert

  Alt 30. Jun 2011, 14:30
Zitat:
Vielleicht hilft Dir das weiter...
Leider nein habe alle möglichen parameter geprüft.
Ich teste das mal mit der ListView oder anderer Komponente.

Edit:
ListView und TreeView funktionieren.

gruss

Geändert von EWeiss (30. Jun 2011 um 14:49 Uhr)
  Mit Zitat antworten Zitat
alfold

Registriert seit: 29. Jun 2010
Ort: Neustrelitz
393 Beiträge
 
Delphi 7 Enterprise
 
#14

AW: Prüfen ob Scrollbar aktiviert

  Alt 30. Jun 2011, 15:15
ListView, auch wenn es auf vsList steht?
Gruss
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#15

AW: Prüfen ob Scrollbar aktiviert

  Alt 30. Jun 2011, 15:19
ListView, auch wenn es auf vsList steht?
Gruss
auf list, report und icon

gruss
  Mit Zitat antworten Zitat
Thom

Registriert seit: 19. Mai 2006
570 Beiträge
 
Delphi XE3 Professional
 
#16

AW: Prüfen ob Scrollbar aktiviert

  Alt 30. Jun 2011, 15:26
Hmm... Das verstehe ich jetzt nicht.
Deine Frage bezog sich doch darauf, ob eine Scrollbar eines TMemo's aktiv ist, oder nicht (sichtbar ist sie ja leider permanent)!?
Und das kann man doch sehr gut mit ScrollBarInfo.rgstate[0] überprüfen?
Das funktioniert bei mir (Delphi XE, XP) ganz hervorragend:
Delphi-Quellcode:
function ScrollBarEnabled(Wnd: HWnd; Vert: Boolean): Boolean;
var
  ScrollBarInfo: TScrollBarInfo;
  IdObject: Integer;
begin
  ScrollBarInfo.cbSize:=Sizeof(TScrollBarInfo);
  if Vert
    then IdObject:=OBJID_VSCROLL
    else IdObject:=OBJID_HSCROLL;
  Result:=GetScrollBarInfo(Wnd,IdObject,ScrollBarInfo) and
          (ScrollBarInfo.rgstate[0] and STATE_SYSTEM_UNAVAILABLE=0);
end;
Thomas Nitzschke
Google Maps mit Delphi
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#17

AW: Prüfen ob Scrollbar aktiviert

  Alt 30. Jun 2011, 16:19
Hmm... Das verstehe ich jetzt nicht.
Deine Frage bezog sich doch darauf, ob eine Scrollbar eines TMemo's aktiv ist, oder nicht (sichtbar ist sie ja leider permanent)!?
Und das kann man doch sehr gut mit ScrollBarInfo.rgstate[0] überprüfen?
Das funktioniert bei mir (Delphi XE, XP) ganz hervorragend:
Delphi-Quellcode:
function ScrollBarEnabled(Wnd: HWnd; Vert: Boolean): Boolean;
var
  ScrollBarInfo: TScrollBarInfo;
  IdObject: Integer;
begin
  ScrollBarInfo.cbSize:=Sizeof(TScrollBarInfo);
  if Vert
    then IdObject:=OBJID_VSCROLL
    else IdObject:=OBJID_HSCROLL;
  Result:=GetScrollBarInfo(Wnd,IdObject,ScrollBarInfo) and
          (ScrollBarInfo.rgstate[0] and STATE_SYSTEM_UNAVAILABLE=0);
end;
Hmm...
Ich kann unter Eigenschaften die Scrollbar welche sichtbar sein soll auswählen.
Bsp. ssVertikal

Alle anderen sind dann im Designer auch nicht sichtbar das ist Fakt.
Aber!
Trotzdem bekomme ich bei der Abfrage siehe erster Beitrag bei State immer einen Positiven wert zurückgeliefert
deshalb wird meine Virtuelle ScrollBar bei ssHorizontal trotzdem gezeichnet.

Habe neue Version unter Projekte hochgeladen.
Bilder werden jetzt gerendert.

gruss
  Mit Zitat antworten Zitat
alfold

Registriert seit: 29. Jun 2010
Ort: Neustrelitz
393 Beiträge
 
Delphi 7 Enterprise
 
#18

AW: Prüfen ob Scrollbar aktiviert

  Alt 30. Jun 2011, 17:38
nimm mal um zu testen STATE_SYSTEM_INVISIBLE.
STATE_SYSTEM_INVISIBLE – if invisible (not shown yet)
STATE_SYSTEM_UNAVAILABLE – if disabled

Wenn man dies abfragen kann, muss man es ja auch setzten können.

//OT: aber mit Img sowas zu machen ist aber nicht der Renner oder? OT//

gruss alfold

Geändert von alfold (30. Jun 2011 um 17:41 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#19

AW: Prüfen ob Scrollbar aktiviert

  Alt 30. Jun 2011, 18:07
Zitat:
//OT: aber mit Img sowas zu machen ist aber nicht der Renner oder? OT//
In wie fern ?
Es wird ja niemand zu seinem Glück gezwungen!
Wenn ich eine Skinned komponente habe nonvcl oder auch nicht..
dann sieht es besch.. aus wenn ausgerechnet die ScrollBar nicht dazu passt.

Deine Vorschläge habe ich alle schon durch.

gruss
  Mit Zitat antworten Zitat
alfold

Registriert seit: 29. Jun 2010
Ort: Neustrelitz
393 Beiträge
 
Delphi 7 Enterprise
 
#20

AW: Prüfen ob Scrollbar aktiviert

  Alt 30. Jun 2011, 18:34
Ich würde es mir nie wagen, Dich in Deinem Eifer zu Bremsen

Zitat:
Das Projekt soll ermöglichen XBeliebe ScrollBars von Komponenten die über eine ScrollBar verfügen den eigenen bedürfnissen anzupassen.
Währe es nicht besser, Du stellst die Propertis zu verfügung und jeder kann sich sein Hintegrund, Farverlauf, Rahmen, Transparenz selber setzten, die er haben möchte, als das mit img zu machen? Das währe doch Top!

Wer hat schon Zeit sich dafür evtl erst noch img zu zeichnen/testen usw.

Egal, wie Du schon sagst: "Es wird ja niemand zu seinem Glück gezwungen!"

Gruss alfold
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:01 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