AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Zoomen des Inhaltes einer Scrollbox

Zoomen des Inhaltes einer Scrollbox

Offene Frage von "oki"
Ein Thema von oki · begonnen am 24. Nov 2008 · letzter Beitrag vom 26. Nov 2008
 
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#1

Zoomen des Inhaltes einer Scrollbox

  Alt 24. Nov 2008, 21:48
Hi Leute,

ich glaub ich bin am Ende meines Lateins. Folgende Aufgabenstellung:

Ich erstelle in einer Anwendung in einer Scrollbox ein Schema mittels eigener Komponenten (Nachfahren von TCustomControl) zur Laufzeit. In einer Scrollbox natürlich deshalb, weil das Schema größer werden kann als der Bildschirmbereich. Jetzt kann man zwar alles super platzieren, weil es durch die Scrollbox keine festen Begrenzungen gibt, aber die Sache wird bei großen Schematas natürlich etwas unübersichtlich. Praktisch ist dann ja eine Zoomfunktion. Immer wohl gemerkt, dass es nicht um ein Image oder Zeichnen auf den Canvas, sondern um Komponenten auf einer Scrollbox geht.

Nun dachte ich, dass kann man mit SetViewportExtEx lösen. Da tut sich aber gar nichts. Hier mal mein Code:
Delphi-Quellcode:
procedure TSeysolMain_Form.ToolButton4Click(Sender: TObject);
var OSize : TSize;
    ActiveSB : TRTGroupScrollBox;
    Res : Boolean;
    SBDC : HDC;
begin
  OSize.cx := 0;
  OSize.cy := 0;
  ActiveSB := GetScrollBox(self, PageControl1.ActivePage); // meine aktive Scrollbox holen (eigene Funktion)
  if Assigned(ActiveSB) then begin
    SBDC := GetDC(ActiveSB.Handle);
    // GetViewportExtEx(SBDC, OSize);
    SetMapMode(SBDC, MM_ISOTROPIC);
    SetWindowExtEx(SBDC, 4, 4, nil); // mal zum testen fest eingestellt
    SetViewportExtEx(SBDC, 100, 100, nil);
    Res := GetWindowExtEx(SBDC, OSize);
    if not Res then // mal schauen, was draus geworden ist
      MessageDlg(Format('Error Size: %d, %d', [OSize.cx, OSize.cy]), mtInformation, [mbOK], 0)
    else
      MessageDlg(Format('Size: %d, %d', [OSize.cx, OSize.cy]), mtInformation, [mbOK], 0);
  end;
end;
Ich hab zwischenzeitlich geprüft, ob die Funktionen ohne Fehler ausgeführt werden. Ist so, liefern True zurück (hab nur etwas aufgeräumt).

Ja, entweder ich bin total auf dem Holzweg und das geht alles überhaupt nicht mit SetViewportExtEx und Konsorten, oder ich mache nur etwas mit der Verwendung der Funktionen falsch. Ich geb aber auch zu, dass ich durch die Thematik SetViewportExtEx, SetWindowExtEx und SetScaleportExtEx noch nicht durchgestiegen bin. Was benutzt man was wofür?

Im Anhang mal ein Screenshot damit man sieht was ich zoomen will. Es jeht um den jeweils sichtbaren Bereich einer ausgewählten Scrollbox.

Tja, entweder ich hab ein Grundsatz- oder ein Teilpproblem. Sicher bin ich mir auf jeden Fall, dass ich ein Problem habe, denn es tut sich nichts.



Schon mal Dank für die Hilfe,

Guß oki
Angehängte Grafiken
Dateityp: png schema_279.png (105,0 KB, 62x aufgerufen)
42
  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 02:27 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz