AGB  ·  Datenschutz  ·  Impressum  







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

form2 größe aus form1 ändern

Ein Thema von Arnulf · begonnen am 8. Apr 2008 · letzter Beitrag vom 8. Apr 2008
Antwort Antwort
Arnulf

Registriert seit: 28. Okt 2004
Ort: Wien
271 Beiträge
 
#1

form2 größe aus form1 ändern

  Alt 8. Apr 2008, 17:44
Komisch, dass ich nichts gefunden habe darüber.
Aber ich habe 2 Forms.
in unit1 ( form1 ) rufe ich eine function in unit2 (enthält form2 - fVideo) auf.
dort versuche ich die größe von form2 anzupassen.

Delphi-Quellcode:
function TfVideo.receive(var myBitmap : TBitmap) : Boolean;
....
       Canvas.Draw( 0, 0, myBitmap );
       ClientWidth := myBitmap.Width;
       ClientHeight := myBitmap.Height;
.....
end;
der aufruf aus unit1
if (waitstate = WAIT_OBJECT_0)   then fVideo.receive(myBitmap); in onRepaint der form2 (fVideo)
hab ich
Delphi-Quellcode:
ClientWidth := uMain.myBitmap.Width;
ClientHeight := uMain.myBitmap.Height;
Canvas.Draw( 0, 0, uMain.myBitmap );
jetzt wird mir beim aufruf die größe nicht angepasst.
beim repaint event allerdings schon.
also muss ich erst ein fenster über form2 (fVideo) drüberziehen damit es funktioniert.

Ist sicher nur eine kleine einstellung oder so, aber ich hab keine ahnung wo ich suchen soll.

lg
Arnulf
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: form2 größe aus form1 ändern

  Alt 8. Apr 2008, 18:02
Hallo Arnulf,

hast du es schonmal mit dem Aufruf der Methode Invalidate() innerhalb von Receive() probiert?

Grüße vom marabu
  Mit Zitat antworten Zitat
Arnulf

Registriert seit: 28. Okt 2004
Ort: Wien
271 Beiträge
 
#3

Re: form2 größe aus form1 ändern

  Alt 8. Apr 2008, 21:31
Hallo marabu
nein nur asserhalb oder ja jetzt gerade.
funktioniert auch nicht.
fVideo reagiert einfach nicht auf die commandos hm...
  Mit Zitat antworten Zitat
busybyte

Registriert seit: 15. Sep 2006
165 Beiträge
 
#4

Re: form2 größe aus form1 ändern

  Alt 8. Apr 2008, 21:45
Ich tippe mal auf Dein
if waitstate ..
oder das Bitmap ist noch nicht fertig.
Kannst Du doch ganz einfach überprüfen.
Globales Bitmap und dann im receive dem Globalen Bmp dein übergebenes Bmp zuweisen.
Breakpoint direkt danach und Inhalt überprüfen,dann siehst Du ob
das übergebene Bmp stimmt.Wenn er gar nicht in Receive springt liegts wohl am if then.
Eine Form kann so auch nicht unendlich klein gemacht werden.
Minimum Width bei mir 125 mit Borderstyle (bsSizeable!)
bei allen anderen Borderstyles gehts auch schmaler.
I love DiscCat
  Mit Zitat antworten Zitat
Arnulf

Registriert seit: 28. Okt 2004
Ort: Wien
271 Beiträge
 
#5

Re: form2 größe aus form1 ändern

  Alt 8. Apr 2008, 21:57
nein am waitstate liegts sicher nicht.
nachdem die receive funktion aufgerufen wird - und das bitmap bekomme ich ebenfalls.
grundsätzlich benutze ich ein globales bitmap - übergebe das ja mit var.

Hab jetzt probiert in receive()
Delphi-Quellcode:
       ClientWidth := 100;
       ClientHeight := 100;
       invalidate();
einfach fix zu vergeben und hab mit breakpoint geprüft. - er springt einfach drüber ohne irgend etwas zu tun.
lg
  Mit Zitat antworten Zitat
Benutzerbild von semo
semo

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

Re: form2 größe aus form1 ändern

  Alt 8. Apr 2008, 22:01
ich würde mich dem marabu anschließen:

Delphi-Quellcode:
function TfVideo.receive(var myBitmap : TBitmap) : Boolean;
....
  if Assigned(myBitmap) then
  begin
    Width := myBitmap.Width;
    Height := myBitmap.Height;
    Canvas.Draw(0, 0, myBitmap);
    Invalidate();
  end;
.....
end;
Wissenswert wäre: Wie groß ist die Höhe und Breite deines Bitmaps?
  Mit Zitat antworten Zitat
Benutzerbild von semo
semo

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

Re: form2 größe aus form1 ändern

  Alt 8. Apr 2008, 22:06
Einen Designvorschlag habe ich auch noch:
Warum nicht in form1 eine private Variable für dein Bitmap nutzen, die du dann per form2.receive() übergibst und in form2 ebenfalls eine private variable für das bitmap nutzen, welches du dann in form2.receive setzt.

man sollte wenn möglich globale variablen vermeiden.
somit kannst du auch dein in form2 dein
Delphi-Quellcode:
uses
  form1;
herauswerfen.

PS: Was passiert denn noch in deiner receive funktion?
Hats du noch andere Events des Form2 implementiert?
Könntest du nicht den Quellcode von form2 anhängen?
  Mit Zitat antworten Zitat
Arnulf

Registriert seit: 28. Okt 2004
Ort: Wien
271 Beiträge
 
#8

Re: form2 größe aus form1 ändern

  Alt 8. Apr 2008, 22:10
800x600

Delphi-Quellcode:
       if ( Assigned(myBitmap)) then
       begin
       ClientWidth := myBitmap.Width;
       ClientHeight := myBitmap.Height;
// ClientWidth := 200;
// ClientHeight := 200;
       Canvas.Draw( 0, 0, MyBitmap );
       invalidate();
       end
       else messagebox(0,pchar('no Bitmap'),nil,0)
funktioniert ebenfalls nicht - sobald ich aber ein anderes fenster drüber fahre gehts ( klar wegen onpaint).

edit:
jetzt mal ganz im ernst - das ist doch irgend so eine kleinigkeit die ich nicht weiß.
ich hab jetzt einfach mal das programm gestartet und einen button eingefügt:
Delphi-Quellcode:
procedure TfMain.Button2Click(Sender: TObject);
begin
fVideo.ClientHeight := 500;
fVideo.ClientWidth := 500;
fVideo.Invalidate;
end;
da tut sich nichts auf der form fVideo.
also hab ich irgend so eine kleinigkeit falsch und die sourcen sind es nicht sonder irgend etwas anderes
  Mit Zitat antworten Zitat
Benutzerbild von semo
semo

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

Re: form2 größe aus form1 ändern

  Alt 8. Apr 2008, 22:44
hängst du bitte mal das projekt als zip archiv an.
sonst können wir hier noch lange rätseln.
  Mit Zitat antworten Zitat
Arnulf

Registriert seit: 28. Okt 2004
Ort: Wien
271 Beiträge
 
#10

Re: form2 größe aus form1 ändern

  Alt 8. Apr 2008, 22:51
ok - jetzt hab ichs.
ich hab einfach in der art noch nie mit 2 forms gearbeitet.

ich hab in form1 create - eine form2 erstellt und auf visible=true gesetzt.
damit hatte ich wohl 2 forms und eine runtime erstellt - also 3.

Dann ist es klar, warum beim onpaint event alles funktioniert hat, aber nicht wenn ich dirrekt was gezeichnet habe.

und ich bin nur drauf gekommen, weil ich einfach mal ein leeres projekt mit 2 forms erstellt hab.

jetzt verstehe ich auch, warum jeder angenommen hat, irgend etwas würde nicht stimmen mit den funktionen oder den events, weil alles eh so funktioniert wie ich es mir gedacht habe.
nur darf ich hald nicht extra noch eine form erstellen.

danke für die hilfe
Arnulf
  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 16:59 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