AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte SubClassed Control
Thema durchsuchen
Ansicht
Themen-Optionen

SubClassed Control

Ein Thema von EWeiss · begonnen am 30. Jun 2011 · letzter Beitrag vom 10. Okt 2016
Antwort Antwort
Seite 2 von 4     12 34      
EWeiss
Projekt entfernt..

Geändert von EWeiss (24. Jul 2019 um 04:49 Uhr)
 
EWeiss
 
#11
  Alt 30. Jun 2011, 22:21
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

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


gruss

Geändert von EWeiss (30. Jun 2011 um 22:29 Uhr)
  Mit Zitat antworten Zitat
Thom

 
Delphi XE3 Professional
 
#12
  Alt 30. Jun 2011, 22:36
Nö. Ist unter den Tisch gefallen...
Thomas Nitzschke
  Mit Zitat antworten Zitat
EWeiss
 
#13
  Alt 30. Jun 2011, 22:42
Nö. Ist unter den Tisch gefallen...
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

Geändert von EWeiss (30. Jun 2011 um 22:51 Uhr)
  Mit Zitat antworten Zitat
Thom

 
Delphi XE3 Professional
 
#14
  Alt 30. Jun 2011, 22:54
[...] unter Win7 stimmen die Koordinaten exakt.
Hmm... Merkwürdig...

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.

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

Geändert von Thom (30. Jun 2011 um 22:56 Uhr)
  Mit Zitat antworten Zitat
EWeiss
 
#15
  Alt 30. Jun 2011, 22:58
[...] unter Win7 stimmen die Koordinaten exakt.
Hmm... Merkwürdig...
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

Geändert von EWeiss (30. Jun 2011 um 23:18 Uhr)
  Mit Zitat antworten Zitat
Thom

 
Delphi XE3 Professional
 
#16
  Alt 30. Jun 2011, 23:21
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:
scrollbarxxl.jpg

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?
Thomas Nitzschke

Geändert von Thom (30. Jun 2011 um 23:23 Uhr)
  Mit Zitat antworten Zitat
EWeiss
 
#17
  Alt 30. Jun 2011, 23:41
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

Geändert von EWeiss (30. Jun 2011 um 23:51 Uhr)
  Mit Zitat antworten Zitat
Thom

 
Delphi XE3 Professional
 
#18
  Alt 30. Jun 2011, 23:56
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.
Thomas Nitzschke
  Mit Zitat antworten Zitat
EWeiss
 
#19
  Alt 1. Jul 2011, 00:04
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
  Mit Zitat antworten Zitat
EWeiss
 
#20
  Alt 1. Jul 2011, 21:30
Quelltext in DLL gekapselt alles andere oben.

gruss
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 4     12 34      


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 11: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