AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TPaintBox1 in TScrollBox1 (PrintPreview)

Ein Thema von madina · begonnen am 26. Apr 2009 · letzter Beitrag vom 27. Apr 2009
Antwort Antwort
madina

Registriert seit: 1. Nov 2005
153 Beiträge
 
#1

TPaintBox1 in TScrollBox1 (PrintPreview)

  Alt 26. Apr 2009, 21:49
Hallo,

ich habe ein TForm der ein TScrollBox1 (als Client: der den gesamten TForm überdeckt) und ein TPaintBox Komponente beinhaltet.

durch folgende Delphi Sourcecode vergrößere ich den durch X/Y gedruckten Mousekoordinaten im TPaintBox1 Breite/Höhe um einen Faktor=0.2 und dann ziehe ich von dem neuen Punkt die Hälfte des TScrollBox1 ab in iX/iY dann setze ich die ScrollBox1.HorzScrollBar/VertScrollBar um nach der Vergrößerung diesen Punkt wieder zentriert darzustellen. Es klappt problemlos bis zu einem bestimmten Faktor. Beim 24. mal stimmt die iX/iY auf einmal nicht mehr, weil X oder Y negativ wird. Wenn ich kein ScrollBox1.HorzScrollBar/VertScrollBar setze, springt er sofort nach der Vergrößerung zum X/Y=0/0 kein Problem und ich kann bielibige male vergrößern

Ich habe versucht die ausgewählten Mousekoordinaten X/Y mit Mousebewegung auszugeben, was mich wundert, daß der X oder Y Mousekoordinaten beim negativen X/Y nicht vom 0-MaxInteger geht sondern (0 bis 32767...-32768...-1000...-9999...-1...0...1...) geht und dadurch mein Formel stellt den gedruckten Mousekoordinaten nicht mittig im TForm dar sondern mit einer Abweichung.

Warum geht der Bereich so durcheinander und wie kann ich dies lösen ???:

Delphi-Quellcode:
procedure TfrmPrintPreview.PaintBox1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  with PaintBox1 do
    begin
      Visible:= False;
        // X
        Width:= Width+Trunc(Width*0.2); // Vergrößerung
        // Y
        Height:= Height+Trunc(Height*0.2); // Vergrößerung
      Visible:= True;

      // Zentriert: Berechnung neuer Mousekoordinaten nach Vergrößerung
      iX:= Trunc(X+X*0.2-ScrollBox1.ClientWidth div 2);
      iY:= Trunc(Y+Y*0.2-ScrollBox1.ClientHeight div 2);
    end;

  // ScrollBox nach der Vergrößerung zum neuen MouseKoordin. führen
  ScrollBox1.Visible:= false;
    ScrollBox1.HorzScrollBar.Position:= iX;
    ScrollBox1.VertScrollBar.Position:= iY;
  ScrollBox1.Visible:= true;
end;
mfg
madina
mfg
madina
  Mit Zitat antworten Zitat
Benutzerbild von semo
semo

Registriert seit: 24. Apr 2004
755 Beiträge
 
Delphi 2010 Professional
 
#2

Re: TPaintBox1 in TScrollBox1

  Alt 26. Apr 2009, 22:18
Vielleicht beschreibst du erst einmal was du damit genau erreichen / bezwecken möchtest?!
  Mit Zitat antworten Zitat
madina

Registriert seit: 1. Nov 2005
153 Beiträge
 
#3

Re: TPaintBox1 in TScrollBox1

  Alt 27. Apr 2009, 09:01
Hallo,

ich will damit ein Printpreview erreichen.

mfg
mfg
madina
  Mit Zitat antworten Zitat
Antwort Antwort


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 08:05 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