AGB  ·  Datenschutz  ·  Impressum  







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

JvPanel zur Laufzeit skalieren

Ein Thema von Jens Hartmann · begonnen am 18. Dez 2011 · letzter Beitrag vom 19. Dez 2011
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Jens Hartmann
Jens Hartmann

Registriert seit: 11. Jan 2009
Ort: Wilnsdorf
1.439 Beiträge
 
Delphi XE2 Professional
 
#1

JvPanel zur Laufzeit skalieren

  Alt 18. Dez 2011, 14:11
Hallo und einen schönen Sonntag zusammen,

ich habe ein Form mit mehreren gleichgroßen JvPanel Komponenten. Ich möchte diese zur Laufzeit skalieren können. Das geht auch soweit ohne Problem. Jetzt kommt das was ich bislang noch nicht hinbekommen habe. Ändere ich die Größe von z.B. Panel1, sollen alle anderen Panels ebenfalls gleichmäßig mit "Größer" oder "Kleiner" werden.
Die Panels werden zur Laufzeit auch erst erstellt. Das heißt, ich muss der Methode eine Prozedure zuweisen.

Delphi-Quellcode:
private
  //Methoden zu JvPanel
  procedure PanelSetWidth(Sender: TObject; ChangedSize: Integer);
  procedure PanelSetHeight(Sender: TObject; ChangedSize: Integer);

...
//Erstellen der Panels zu Laufzeit
  Panels[i] := TJvPanel.Create(Self);
  with Panels[i] do
    begin
      Name := 'p'+IntToStr(i);;
      Parent := ParentPan;
      Align := alClient;
      Height := KPanelHeight;
      Width := KPanelWidth;
      Caption := IntToStr(i);
      Sizeable := True;
      OnChangedWidth := PanelSetWidth;
      OnChangedHeigth := PanelSetHeigth;
      TabOrder := i;
    end;
Das Problem ist, ich kann das entsprechenden Panel skalieren, allerdings wird die Methode OnChangeWidth und OnChangeHeigth nie aufgerufen. Selbst wenn ich eine Komponente zur Entwurfszeit auf die Form legen und z.B. ein ShowMessage('Größe geändert'); in die Methode eintrage. Es passiert nichts. Kennt jemand vieleicht das Problem?

Gruß Jens
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: JvPanel zur Laufzeit skalieren

  Alt 18. Dez 2011, 14:16
Versuzch es mal ohne with
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Jens Hartmann
Jens Hartmann

Registriert seit: 11. Jan 2009
Ort: Wilnsdorf
1.439 Beiträge
 
Delphi XE2 Professional
 
#3

AW: JvPanel zur Laufzeit skalieren

  Alt 18. Dez 2011, 14:19
Zitat von mkinzler:
Versuzch es mal ohne with
Was soll das bringen, selbst bei zur entwurfszeit erstellten Panels, wird die Methode nich gefeuert...
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt.
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#4

AW: JvPanel zur Laufzeit skalieren

  Alt 18. Dez 2011, 14:21
Du musst eine Prozedur zuweisen die erreichbar ist

Delphi-Quellcode:
  TForm1 = class(TForm)
    JvPanel1: TJvPanel;
    procedure JvPanel1ChangedHeight(Sender: TObject; ChangedSize: Integer);
//......

procedure TForm1.JvPanel1ChangedHeight(Sender: TObject; ChangedSize: Integer);
begin
 //CODE
end;
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von Jens Hartmann
Jens Hartmann

Registriert seit: 11. Jan 2009
Ort: Wilnsdorf
1.439 Beiträge
 
Delphi XE2 Professional
 
#5

AW: JvPanel zur Laufzeit skalieren

  Alt 18. Dez 2011, 14:25
Zitat von Bummi:
Du musst eine Prozedur zuweisen die erreichbar ist
Warum sollte meine Prozedur nicht ereichbar sein.
Delphi-Quellcode:
private
//Ist in der selben Unit, ansonsten könnte ich ja nicht kompilieren...
Wie gesagt, selbst bei zur Entwurszeit auf die Form gelegten Komponenten wird die Prozedur nicht ausgelößt..

Gruß Jens
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt.
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#6

AW: JvPanel zur Laufzeit skalieren

  Alt 18. Dez 2011, 14:54
dann muss es irgendwo ein Missverständnis geben, das hier funktioniert ....
Delphi-Quellcode:
procedure TForm1.JvPanel1ChangedHeight(Sender: TObject; ChangedSize: Integer);
begin
  Showmessage(IntToStr(ChangedSize));
end;

procedure TForm1.JvPanel1Click(Sender: TObject);
begin
   JvPanel1.Height := JvPanel1.Height + 10;
end;
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von Jens Hartmann
Jens Hartmann

Registriert seit: 11. Jan 2009
Ort: Wilnsdorf
1.439 Beiträge
 
Delphi XE2 Professional
 
#7

AW: JvPanel zur Laufzeit skalieren

  Alt 18. Dez 2011, 15:01
Ich weiß, das geht. Da Du die Höhe hier durch das OnClick beeinflussen tust.

Du kannst aber die Größe ja auch bei der Eigenschaft Sizeable := True; über die Maus mit ziehen im unteren Bereich einstellen. Dabei passiert nichts..
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt.
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#8

AW: JvPanel zur Laufzeit skalieren

  Alt 18. Dez 2011, 15:26
OK, jetzt habe ich verstanden wo es hängt ....
Delphi-Quellcode:

  TForm1 = class(TForm)
    JvPanel1: TJvPanel;
    procedure JvPanel1ChangedHeight(Sender: TObject; ChangedSize: Integer);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

{ TJvPanel }

procedure TJvPanel.SetBounds(ALeft, ATop, AWidth, AHeight: Integer);
begin
  inherited;
  if Assigned(OnChangedHeight) then OnChangedHeight(Self,AHeight);

end;

procedure TForm1.JvPanel1ChangedHeight(Sender: TObject; ChangedSize: Integer);
begin
  Caption := (IntToStr(ChangedSize));
end;
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von Jens Hartmann
Jens Hartmann

Registriert seit: 11. Jan 2009
Ort: Wilnsdorf
1.439 Beiträge
 
Delphi XE2 Professional
 
#9

AW: JvPanel zur Laufzeit skalieren

  Alt 19. Dez 2011, 08:08
Zitat von Bummi:
Delphi-Quellcode:
procedure TJvPanel.SetBounds(ALeft, ATop, AWidth, AHeight: Integer);
 begin
   inherited;
     if Assigned(OnChangedHeight) then OnChangedHeight(Self,AHeight);
end;
Wie kann ich SetBounds einbinden. Bei mir wird das Fehler erkannt.
Ich muss allerdings gestehen, noch nie eine Prozedur mit dem Aufruf inherited aus einer anderen Klasse genutzt zu haben.

Gruß Jens
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt.
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#10

AW: JvPanel zur Laufzeit skalieren

  Alt 19. Dez 2011, 08:21
Delphi-Quellcode:
type

  TJvPanel=Class(JVPanel.TJvPanel)
        procedure SetBounds(ALeft, ATop, AWidth, AHeight: Integer);override;
  End;

  TForm1 = class(TForm)
    JvPanel1: TJvPanel;
    procedure JvPanel1ChangedHeight(Sender: TObject; ChangedSize: Integer);
  private
    { Private-Deklarationen }
.................
................
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 06:22 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