AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language einer Procedure Formulare als Parameter übergeben?
Thema durchsuchen
Ansicht
Themen-Optionen

einer Procedure Formulare als Parameter übergeben?

Ein Thema von sko1 · begonnen am 10. Mai 2017 · letzter Beitrag vom 10. Mai 2017
Antwort Antwort
sko1

Registriert seit: 27. Jan 2017
588 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#1

einer Procedure Formulare als Parameter übergeben?

  Alt 10. Mai 2017, 08:06
Delphi-Version: 5
Hallo,

ich stehe auf dem Schlauch:
Ich benötige eine procedure, die die Größe und die Position eines Formulars festlegt.
Innerhalb des Forms ist das natürlich kein Problem, ich möchte aber ausgehend vom Hauptformular, dass jedes daraus angezeigte Unterformular die gleiche Position und Größe wie das aufrufende Formular hat.

Das kann ich als Procedure in jedem Formular einzeln machen, aber bei > 20 Unterformularen wäre das ja Unsinn, ich möchte eine "allgemeingültige" procedure haben, der ich das zu ändernde Unterformular übergebe und die ich dann aus allen Unterformularen aufrufen kann...

procedure Groesse(var f : TForm) geht nicht weil der ja TFormUnter1, TFormUnter2 etc. übergeben wird.

Wo habe ich den Knoten im Hirn?

Ciao
Stefan
  Mit Zitat antworten Zitat
Benutzerbild von Nersgatt
Nersgatt

Registriert seit: 12. Sep 2008
Ort: Emlichheim
693 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2

AW: einer Procedure Formulare als Parameter übergeben?

  Alt 10. Mai 2017, 08:11
Deine Formulare sind ja von TForm abgeleitet. Daher kannst Du den Parameter als TForm deklarieren und die Deine Formulare übergeben. Das ist kein Problem
Jens
  Mit Zitat antworten Zitat
bcvs

Registriert seit: 16. Jun 2011
703 Beiträge
 
Delphi 12 Athens
 
#3

AW: einer Procedure Formulare als Parameter übergeben?

  Alt 10. Mai 2017, 08:16
Du musst nur das var weglassen:
procedure Groesse(f : TForm); f ist ja nur ein Zeiger auf das Formular. Den wilst du in der procedure ja nicht verändern, sondern die Inhalte / Properties.
  Mit Zitat antworten Zitat
sko1

Registriert seit: 27. Jan 2017
588 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#4

AW: einer Procedure Formulare als Parameter übergeben?

  Alt 10. Mai 2017, 08:26
Danke, ich glaube ich habe es geschnallt!

Jetzt sieht das Ganze so aus:

Delphi-Quellcode:
procedure Groessenanpassung(var f: TCustomForm);
begin
    f.left := MainformPos.x;
    f.top := MainformPos.y;
    f.width := MainformPos.w;
    f.height := MainformPos.h;
  end;
end;

und beim Aufruf caste ich das aufrufende Formular

    Groessenanpassung(TCustomForm(self));

Habe ich noch was übersehen, zumindest funktioniert es nun wie gewünscht.

Ciao
Stefan
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman
Online

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.387 Beiträge
 
Delphi 12 Athens
 
#5

AW: einer Procedure Formulare als Parameter übergeben?

  Alt 10. Mai 2017, 08:33
Moin...
Den Cast kannst du dir schenken.
Delphi-Quellcode:
Groessenanpassung(self);
.
Das VAR auch...
Delphi-Quellcode:
Groessenanpassung(f: TCustomForm);
.
PS: sind die Buchstaben auf der Tastatur ausgegangen? Warum hat der Parameter (f) keinen sprechenden Namen?

Geändert von haentschman (10. Mai 2017 um 08:36 Uhr)
  Mit Zitat antworten Zitat
AndyDF

Registriert seit: 6. Sep 2006
Ort: Allgäu
99 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: einer Procedure Formulare als Parameter übergeben?

  Alt 10. Mai 2017, 08:35
Und das "var" kann auch weg bleiben. Also nur:
procedure Groessenanpassung(f: TCustomForm);
Sonst veränderst du dir noch deinen originalen Form-Pointer.

[Edit]
@haentschman: haben wir wohl zur selben Zeit geschrieben.
Andreas Blenk
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman
Online

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.387 Beiträge
 
Delphi 12 Athens
 
#7

AW: einer Procedure Formulare als Parameter übergeben?

  Alt 10. Mai 2017, 08:39
hier ist es besser doppelt als vergessen...
  Mit Zitat antworten Zitat
sko1

Registriert seit: 27. Jan 2017
588 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#8

AW: einer Procedure Formulare als Parameter übergeben?

  Alt 10. Mai 2017, 08:53
Danke, habe Eure Vorschläge umgesetzt!

Zitat:
Sonst veränderst du dir noch deinen originalen Form-Pointer.
beim Ändern der Abmessungen / Position des übergebenen Formulars?

Ciao
Stefan
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman
Online

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.387 Beiträge
 
Delphi 12 Athens
 
#9

AW: einer Procedure Formulare als Parameter übergeben?

  Alt 10. Mai 2017, 08:57
Zitat:
beim Ändern der Abmessungen / Position des übergebenen Formulars?
...es könnte der 35. Mitarbeiter (weil er es nicht besser weiß ) das versuchen. Sicher ist sicher. Dann erhällt er wenigstens die Meldung: "Du Trottel".
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.736 Beiträge
 
Delphi 6 Enterprise
 
#10

AW: einer Procedure Formulare als Parameter übergeben?

  Alt 10. Mai 2017, 08:58
PS: sind die Buchstaben auf der Tastatur ausgegangen? Warum hat der Parameter (f) keinen sprechenden Namen?
Im Prinzip hast du ja recht, aber f für TForm in einer Procedure mit 4 LOC find ich vertretbar. Erst recht, wenn man die Procedure selber umbenennt in FormGrössenanpassung oder sowas.
Ralph
  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:20 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