Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   SubClassed Control (https://www.delphipraxis.net/161368-subclassed-control.html)

EWeiss 30. Jun 2011 22:21

AW: SubClassed ScrollBar
 
Zitat:

Zitat von Thom (Beitrag 1109357)
Problem gefunden/gelöst:
Delphi-Quellcode:
function THookedScrollbar.StoreHorizontal(WinHandle: HWND): Boolean;
begin
  //...
  Result:=HScrBar.rgstate[0] and STATE_SYSTEM_INVISIBLE=0;
end;

function THookedScrollbar.StoreVertical(WinHandle: HWND): Boolean;
begin
  //...
  Result:=VScrBar.rgstate[0] and STATE_SYSTEM_INVISIBLE=0;
end;
Allerdings habe ich noch einen kleinen Fehler gefunden:
Anhang 34538
Es sieht so aus, als ob die Scrollbar um jeweils einen Pixel nach rechts und unter verschoben wäre. Könnte das sein?

Das ist ohne weiteres möglich meine Augen "Sorry" sind nicht mehr die besten.

werde es mal einbauen und schaun ob es geht. ;)
Mit Quelltext geht es doch besser :) als mit ner :glaskugel:

EDIT:
Was hast mit State gemacht?
Auf der Basis wird es ja nicht mehr gebraucht.. Oder? ;)


gruss

Thom 30. Jun 2011 22:36

AW: SubClassed ScrollBar
 
Nö. Ist unter den Tisch gefallen... :lol:

EWeiss 30. Jun 2011 22:42

AW: SubClassed ScrollBar
 
Zitat:

Zitat von Thom (Beitrag 1109360)
Nö. Ist unter den Tisch gefallen... :lol:

Funktioniert soweit..
Naja kleine Probleme findet man immer noch irgend wo.
Hab mal mit meiner Screenlupe geschaut unter Win7 stimmen die Koordinaten exakt.

Zitat:

P.S.: Das ist ja ein richtig umfangreiches Projekt und einer Menge Arbeit, die da drin steckt.
Ganz tolle Arbeit!

Danke für die Blumen.. Jup das macht sich nicht von alleine
und als Hobby Schreiber hab ich das schon gut hinbekommen denk ich mal.

EDIT:
Solltest du vielleicht noch ändern!
Es macht keinen Sinn den Rect zu kopieren wenn die ScrollBar nicht aktiv ist.

Delphi-Quellcode:
function THookedScrollbar.StoreHorizontal(WinHandle: HWND): Boolean;
var
  State: Boolean;
begin

  // Lese aktuelle Bar Parameter
  HScrBar.cbSize := SizeOf(HScrBar);
  GetScrollBarInfo(WinHandle, integer(OBJID_HSCROLL), HScrBar);

  State := HScrBar.rgstate[0] and STATE_SYSTEM_INVISIBLE = 0;
  if State then
    // kopiere den aktuellen Rect zur späteren bearbeitung
    CopyRect(HorzRect, HScrBar.rcScrollBar);

  Result := State;

end;

gruss

Thom 30. Jun 2011 22:54

AW: SubClassed ScrollBar
 
Zitat:

Zitat von EWeiss (Beitrag 1109361)
[...] unter Win7 stimmen die Koordinaten exakt.

Hmm... Merkwürdig... :gruebel:

Zitat:

Zitat von EWeiss (Beitrag 1109361)
Jup das macht sich nicht von alleine und als Hobby Schreiber hab ich das schon gut hinbekommen denk ich mal.

Auf jeden Fall! Da können sich diverse Schaff-Ich-Das-Abi-Oder-Nicht-Programme gleich ein paar Scheiben abschneiden. :wink:

P.S.: Ja - da hast Du Recht. Hab' die Änderung übernommen.

EWeiss 30. Jun 2011 22:58

AW: SubClassed ScrollBar
 
Zitat:

Zitat von Thom (Beitrag 1109363)
Zitat:

Zitat von EWeiss (Beitrag 1109361)
[...] unter Win7 stimmen die Koordinaten exakt.

Hmm... Merkwürdig... :gruebel:

Warum merkwürdig ?
Denke das ist normal die ScrollBars sind wohl etwas Größer ausgefallen.

Zitat:

P.S.: Ja - da hast Du Recht. Hab' die Änderung übernommen.
OkiDoki ;)

PS:
Du kannst aber mit GetOS prüfen welches OS verwendet wird und dem entsprechend
die Function ResizeScrollBarPos erweitern.
Alles was mehr als WinXp ist so belassen..

gruss

Thom 30. Jun 2011 23:21

AW: SubClassed ScrollBar
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von EWeiss (Beitrag 1109364)
Denke das ist normal die ScrollBars sind wohl etwas Größer ausgefallen.

Aha: Da liegt der Hase im Pfeffer. Ich habe mal auf meinem Rechner den Scrollbars eine XXL-Größe mit einer Breite von 30 Pixeln verpaßt:
Anhang 34539

Damit offenbart sich ein Problem: Deine Scrollbars funktionieren nur dann richtig, wenn nicht irgendwer seinen Rechner "umgestellt" hat. Wäre es da nicht eventuell günstiger, die Darstellung nicht über Bilder zu realisieren, sondern direkt zu zeichnen? Oder eventuell über SVG-Bilder, die sich besser skalieren lassen?

EWeiss 30. Jun 2011 23:41

AW: SubClassed ScrollBar
 
Zitat:

Zitat von Thom (Beitrag 1109365)
Zitat:

Zitat von EWeiss (Beitrag 1109364)
Denke das ist normal die ScrollBars sind wohl etwas Größer ausgefallen.

Aha: Da liegt der Hase im Pfeffer. Ich habe mal auf meinem Rechner den Scrollbars eine XXL-Größe mit einer Breite von 30 Pixeln verpaßt:
Anhang 34539

Damit offenbart sich ein Problem: Deine Scrollbars funktionieren nur dann richtig, wenn nicht irgendwer seinen Rechner "umgestellt" hat. Wäre es da nicht eventuell günstiger, die Darstellung nicht über Bilder zu realisieren, sondern direkt zu zeichnen? Oder eventuell über SVG-Bilder, die sich besser skalieren lassen?

Denke mal von meiner erfahrung her geht nichts über PNG.
Hatte da noch nie probleme bei der Skalierung.

Man müßte halt dann noch irgendwie abfragen wie die aktuelle positionen im System eingestellt sind.
Da muss ich mich aber erst mal reindenken und im NET mal nachblättern wie ich das realisieren kann.
Das skalieren ist dann das kleinst problem.
Denke das ich dann aber die Stretchblitter Methode von GDI+ verwenden werde.
Aktuell ist sie ja von GDI.

PS:
Denke das ist über den Rect der Originalen ScrollBar zu ermitteln.
Da muss man nicht im System rumwurschteln.


gruss

Thom 30. Jun 2011 23:56

AW: SubClassed ScrollBar
 
Zitat:

Zitat von EWeiss (Beitrag 1109367)
Denke das ist über den Rect der Originalen ScrollBar zu ermitteln. Da muss man nicht im System rumwurschteln.

Ja - denke auch, daß das funktionieren sollte. Du ermittelst ja schon den Bereich bzw. das Rechteck, das die Scrollbar einnimmt.

EWeiss 1. Jul 2011 00:04

AW: SubClassed ScrollBar
 
Zitat:

Zitat von Thom (Beitrag 1109368)
Zitat:

Zitat von EWeiss (Beitrag 1109367)
Denke das ist über den Rect der Originalen ScrollBar zu ermitteln. Da muss man nicht im System rumwurschteln.

Ja - denke auch, daß das funktionieren sollte. Du ermittelst ja schon den Bereich bzw. das Rechteck, das die Scrollbar einnimmt.

Man muss ja nur die Höhe prüfen mehr ist das nicht und dann darauf reagieren.
Die Standard einstellung ist 16x16 pixel ..den Rect prüfen und dann hochrechnen also wenn die höhe 20 dann müssen die
Down und Up Button ebend auf 20x20 hochskaliert werden.

Einfach * ScaleFactor

gruss

EWeiss 1. Jul 2011 21:30

AW: SubClassed ScrollBar
 
Quelltext in DLL gekapselt alles andere oben.

gruss


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:05 Uhr.
Seite 2 von 4     12 34      

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