AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi FlowChart-Inhalt in ein Metafile (EMF)...
Thema durchsuchen
Ansicht
Themen-Optionen

FlowChart-Inhalt in ein Metafile (EMF)...

Ein Thema von Herbie · begonnen am 21. Apr 2005 · letzter Beitrag vom 22. Apr 2005
 
Herbie

Registriert seit: 23. Jul 2004
Ort: Augsburg
14 Beiträge
 
Delphi 6 Enterprise
 
#7

Re: FlowChart-Inhalt in ein Metafile (EMF)...

  Alt 22. Apr 2005, 12:23
Habs jetzt mit dem weiter unten angegebenen Code hinbekommen - mit dem Problem, das die Grafik das erzeugte Metafile nicht komplett ausfüllt. Die Grafik "hängt" links oben in dem Metafile, aber rechts und unten ist ein größerer Bereich nicht belegt. Was muss ich denn einstellen/berechnen, damit die Grafik das Metafile komplett ausfüllt?

Vielen Dank für eure Hilfe!

Delphi-Quellcode:
function GetFlowChartMetaFile(FC: TdxFlowChart): TMetafile;
var
  H, W, NewW: Integer;
  AAlign: TAlign;
  ABorder: TBorderStyle;
  SInfo: TScrollInfo;
  R: TRect;
  mCanvas: TMetaFileCanvas;
begin
  Result := TMetaFile.Create;
  mCanvas := TMetaFileCanvas.Create(Result,0);
  try
    H := FC.Height;
    W := FC.Width;
    AAlign := FC.Align;
    ABorder := FC.BorderStyle;
    SendMessage(FC.Parent.Handle, WM_SETREDRAW, 0, 0);
    SendMessage(FC.Handle, WM_SETREDRAW, 0, 0);
    FC.Align := alNone;
    FC.BorderStyle := bsNone;
    SInfo.cbSize := SizeOf(SInfo);
    SInfo.fMask := SIF_RANGE;
    if GetScrollInfo(FC.Handle, SB_HORZ, SInfo) then
      NewW := SInfo.nMax - SInfo.nMin + 1
    else
      NewW := 0;
    if GetScrollInfo(FC.Handle, SB_VERT, SInfo) then
      FC.ClientHeight := SInfo.nMax - SInfo.nMin + 1;
    if NewW > 0 then
      FC.ClientWidth := NewW;
    //
    Result.Width := FC.ClientWidth;
    Result.Height := FC.ClientHeight;
    //Result.mmWidth := FC.ClientWidth;
    //Result.mmHeight := FC.ClientHeight;
    mCanvas.Brush := FC.Brush;
    mCanvas.FillRect(FC.ClientRect);
    mCanvas.Lock;
    try
      FC.PaintTo(mCanvas.Handle, 0, 0);
    finally
      mCanvas.Unlock;
      FC.Width := W;
      FC.Height := H;
      FC.BorderStyle := ABorder;
      FC.Align := AAlign;
      SendMessage(FC.Parent.Handle, WM_SETREDRAW, 1, 0);
      SendMessage(FC.Handle, WM_SETREDRAW, 1, 0);
      R := FC.Parent.ClientRect;
      Windows.InvalidateRect(FC.Parent.Handle, @R, FALSE);
      R := FC.ClientRect;
      Windows.InvalidateRect(FC.Handle, @R, FALSE);
      mCanvas.Free;
    end;
  except
    Result.Free;
  end;
end;
Gruss
Jan (Herbie)
Jan Herbert
  Mit Zitat antworten Zitat
 


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