Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Pagecontrol kopieren (https://www.delphipraxis.net/185850-pagecontrol-kopieren.html)

Natcree 11. Jul 2015 23:26

Pagecontrol kopieren
 
Hallo ich lade in Form2 in eine Pagecontrol ein image nun soll im anschluss das Pagecontrol in Form1 genauso angezeigt werden.

Kann mir da jemand helfen?

nuclearping 12. Jul 2015 06:26

AW: Pagecontrol kopieren
 
Wie wäre es mit Delphi-Referenz durchsuchenTFrame als Vorschlag?

Du packst die
Delphi-Quellcode:
TPageControl
in einen neuen
Delphi-Quellcode:
TFrame
und dann jeweils einen
Delphi-Quellcode:
TFrame
auf
Delphi-Quellcode:
TForm1
und
Delphi-Quellcode:
TForm2
.

Wenn es dir darum geht, dass das Bild dann "synchronisiert" wird, kannst du ja eine Synchronize-Funktion schreiben:

Delphi-Quellcode:
unit F_MeinPageControlFrame;

interface

uses
  ...;

const
  WM_SYNCHRONIZE_PAGECONTROLFRAME = WM_USER + 100;

type
  TMeinPageControlFrame = class(TFrame)
    Image_Picture: TImage;
  public
    // Self.Image_Picture mit ASource.Image_Picture aktualisieren
    procedure Synchronize(ASource: TMeinPageControlFrame);

    // Self.Image_Picture setzen und Synchronisierung durchführen
    procedure SetImage;
  end;

implementation

uses
  Forms,

  Unit1 {Enthält TForm1};

// Self.Image_Picture mit ASource.Image_Picture aktualisieren
procedure TMeinPageControlFrame.Synchronize(ASource: TMeinPageControlFrame);
begin
  Image_Picture.Picture.Assign(ASource.Image_Picture.Picture);
end;

// Self.Image_Picture setzen und Synchronisierung durchführen
procedure TMeinPageControlFrame.SetImage;
begin
  Image_Picture.Picture.Bitmap.LoadFromFile('C:\Temp\TestBild1.bmp');

  // Methode 1: TForm1 direkt ansprechen.
  Form1.MeinPageControlFrame.Synchronize(Self);

  // Methode 2: Synchronize in TForm1 per PostMessage an Hauptform aufrufen, die eine
  //    procedure DoSynchronize(var Msg: TMessage); message WM_SYNCHRONIZE_PAGECONTROLFRAME;
  // implementiert und die Parameter an den TFrame weiterleitet.
  //PostMessage(Application.MainForm.Handle, WM_SYNCHRONIZE_PAGECONTROLFRAME, Integer(Self), 0);
end;

Perlsau 12. Jul 2015 20:35

AW: Pagecontrol kopieren
 
Zitat:

Zitat von Natcree (Beitrag 1308425)
Hallo ich lade in Form2 in eine Pagecontrol ein image nun soll im anschluss das Pagecontrol in Form1 genauso angezeigt werden.

Was bedeutet "in Form2 in eine Pagecontrol ein image" laden? Hast du ein TImage auf dem PageControl oder ein TImage auf einem TabSheet dieser PageCotroll-Komponente?

Welches Problem hast du denn jetzt eigentlich? Du kannst doch einfach auf das TImage in Form2 zugreifen, wenn Form2 in der Uses-Klausel von Form1 steht? Was hast du denn bereits versucht?

Was genau bedeutet, daß "im anschluss das Pagecontrol in Form1 genauso angezeigt" werden soll? Im Anschluß an was? Daß das PageControl so aussieht wie das Image?

Übrigens lädst du kein Image, denn das ist eine Komponente, sondern wohl eher ein Bitmap. Wohin lädst du das? Direkt in das PageControl? Auf irgend einen Canvas? Mit anderen Worten: Je genauer du dein Problem beschreibst, desto eher und besser kann man dir behilflich sein.

Natcree 15. Jul 2015 05:51

AW: Pagecontrol kopieren
 
Zitat:

Hast du ein TImage auf dem PageControl oder ein TImage auf einem TabSheet dieser PageCotroll-Komponente?
es wird in einem tabsheet im pagecontrol angezeigt

Zitat:

Was genau bedeutet, daß "im anschluss das Pagecontrol in Form1 genauso angezeigt" werden soll? Im Anschluß an was? Daß das PageControl so aussieht wie das Image?
ich will einfach nur das image auf form1 sehen.

Das habe ich nun gelöst.

das bild wird mir auf Form5 angezeigt. nun sage ich Ihm er soll es auf dem 2. Monitor in der Form6 ausgeben.
das mache ich hiermit.

Delphi-Quellcode:
procedure PlaceFormOnMonitor(AForm: TForm; AMonitorNum: Integer);
var
  r: TRect;
begin
  r := Screen.Monitors[AMonitorNum].WorkareaRect;
  AForm.SetBounds(r.Left, r.Top, r.Right - r.Left, r.Bottom - r.Top);
end;
wenn ich das aber wiederhole dann zeigt er mir die form5 auch auf dem 2.Monitor an.

wie bekomme ich das gelöst

Perlsau 15. Jul 2015 07:21

AW: Pagecontrol kopieren
 
Also mal ganz langsam zum mitschreiben:

Zitat:

Zitat von Natcree (Beitrag 1308691)
es wird in einem tabsheet im pagecontrol angezeigt

1. Du hast auf einem Tabsheet in Form2 eine TImage-Komponente, in die du ein Bild von der Festplatte lädst.

Zitat:

Zitat von Natcree (Beitrag 1308691)
ich will einfach nur das image auf form1 sehen.Das habe ich nun gelöst. das bild wird mir auf Form5 angezeigt.

2. Die Lösung deines Problems, wie du ein TImage, das sich auf Form2 in einem Tabsheet befindet, auch in Form1 anzeigen läßt, besteht darin, das Image auf Form5 anzeigen zu lassen?

Zitat:

Zitat von Natcree (Beitrag 1308691)
nun sage ich Ihm er soll es auf dem 2. Monitor in der Form6 ausgeben.das mache ich hiermit.
Delphi-Quellcode:
procedure PlaceFormOnMonitor(AForm: TForm; AMonitorNum: Integer);
var
  r: TRect;
begin
  r := Screen.Monitors[AMonitorNum].WorkareaRect;
  AForm.SetBounds(r.Left, r.Top, r.Right - r.Left, r.Bottom - r.Top);
end;

3. Du zeigst das TImage, das sich in Form2 auf einem Tabsheet befindet und das du in Form1 anzeigen lassen willst, indem du es auf Form5 anzeigen läßt, nun in AForm an? Wie viele Forms hast du denn eigentlich? Und wie zeigt man ein Image, das sich in Form2 auf einem Tabsheet befindet und das du in Form1 anzeigen lassen willst, indem du es auf Form5 anzeigen läßt, an, indem man lediglich die Position von AForm verändert?

Zitat:

Zitat von Natcree (Beitrag 1308691)
wenn ich das aber wiederhole dann zeigt er mir die form5 auch auf dem 2.Monitor an. wie bekomme ich das gelöst

Wie oben schon beschrieben ist es mir weiterhin unmöglich, dein Problem zu erkennen. Mir keimt zwar der Verdacht, daß du bereits irgend ein zweites Problem beschreibst (wozu eigentlich ein neuer Thread begonnen werden sollte), aber sicher bin ich mir da nicht – zu schwammig sind deine Ausführungen.

Sollte es daraum gehen herauszufinden, bis zu welcher X-Koordinate Bildschirm 1 reicht bzw. ab welcher X-Koordinate Bildschirm 2 beginnt?

BadenPower 15. Jul 2015 08:25

AW: Pagecontrol kopieren
 
@TE:

Erstelle einmal ein Beipiel-Projekt oder lade das jetzige einfach einmal komplett hier hoch, damit wir sehen können, was Du eigentlich vorhast. Aus Deinen Beschreibungen geht leider nur sehr wirres Zeug hervor.

Natcree 16. Jul 2015 07:45

AW: Pagecontrol kopieren
 
Also form1 hat vier schaltflächen
1. schaltfläche bild auf screen 2 ausgeben
2. schaltfläche bild auf screen 2 ausgeben
3. schaltfläche bild auf screen 2 ausgeben
4. hiermit aktiviere ich eine bildausschnitt funktion
nach dem der bildausschnitt markiert ist öffnet er mir meine form2 in der ich das bild sehe und entscheiden
kann, ob es jetzt auf dem 2. Screen ausgegeben wird oder nicht.

zu schaltfläche 4 funktioniert es auch jedoch wenn ich dann im späteren wieder eine der anderen schaltflächen 1-3
benutze und dann wiedermals schaltfläche 4, dann öffnet er mir die form2 auf dem 2. screen und nicht auf dem Hauptscrenn auf dem mein prog läuft.

Dejan Vu 16. Jul 2015 07:49

AW: Pagecontrol kopieren
 
Das ist jetzt nicht so unmittelbar als Beispielprojekt zu erkennen...

BadenPower 16. Jul 2015 09:19

AW: Pagecontrol kopieren
 
Zitat:

Zitat von Dejan Vu (Beitrag 1308807)
Das ist jetzt nicht so unmittelbar als Beispielprojekt zu erkennen...

Nicht nur das.

Am Anfang waren wir bei "PageControl kopieren" und jetzt sind wir irgendwo bei "Bildausschnitt" anzeigen.

Wenn jetzt nicht entsprechender Code hochgeladen wird dann:

42


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:43 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