AGB  ·  Datenschutz  ·  Impressum  







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

Werte in dynamisch erzeugtem Form ändern

Ein Thema von waldforest · begonnen am 5. Jul 2009 · letzter Beitrag vom 8. Jul 2009
Antwort Antwort
waldforest

Registriert seit: 8. Mai 2005
366 Beiträge
 
Delphi XE3 Enterprise
 
#1

Werte in dynamisch erzeugtem Form ändern

  Alt 5. Jul 2009, 17:19
Hallo,
ich habe mich erstmals mit zur Laufzeit dynamisch erzeugten Forms beschäftigt. Ziel ist es,, ähnlich wie in Outlook zu arbeiten

Ich habe mit einem Inplace auf einem Panel
http://www.delphipraxis.net/internal...myforminplaced
erste Erfolge erzielt.
Nun möchte ich, z.B. bei einem Download Informationen im Panel ändern, was mit einer Zugriffsverletzung endet.
Ich habe versucht hier im Forum eine für mich als "Anfänger" erklärbare Lösung zu finden, bin aber gescheitert.
Wenn ich die Unit, welche ich über das Inplacing eingebunden habe autark laufen lasse, also zur Laufzeit erzeugt wird, funktioniert alles, so wie ich es gerne hätte.

Wie muss ich meinen Code anpassen damit die Labels auch in dem zur Laufzeit erzeugten Form geändert werden können.

Für eine verständliche Unterstützung wäre ich dankbar.

Delphi-Quellcode:
TDBUpdate = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    ProgressBar1: TProgressBar;
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
end;
procedure MyUploadCallback(lpszLocal, lpszRemote: string; dwBytesTotal, dwBytesDone: DWORD; Elapsed: Single);


implementation

{$R *.dfm}


procedure MyUploadCallback(lpszLocal, lpszRemote: string; dwBytesTotal, dwBytesDone: DWORD; Elapsed: Single);
begin
 with DBUpdate do
  begin
    Label1.Caption := 'Filename: ' + lpszLocal;
    Label2.Caption := 'Remotename: ' + lpszRemote;
    Label3.Caption := 'Done: ' + Format('%2.n KB/%2.n KB', [dwBytesDone / 1024, dwBytesTotal / 1024]);
    Label4.Caption := 'Percent: ' + IntToStr(Integer(Round((dwBytesDone * 100) / dwBytesTotal))) + '%';
    ProgressBar1.Max := 100;
    ProgressBar1.Position := Integer(Round((dwBytesDone * 100) / dwBytesTotal));
    Refresh;
 end;
end;
[edit=mkinzler]Code-Tag durch Delphi-Tag ersetzt Mfg, mkinzler[/edit]
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#2

Re: Werte in dynamisch erzeugtem Form ändern

  Alt 5. Jul 2009, 20:27
Ich denke mal dass das Problem an deiner dyn. erz. Form liegt.
Warum denn als Inplace und nicht auf normalem Weg ?
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
waldforest

Registriert seit: 8. Mai 2005
366 Beiträge
 
Delphi XE3 Enterprise
 
#3

Re: Werte in dynamisch erzeugtem Form ändern

  Alt 6. Jul 2009, 07:17
Hallo,
verstehe die Antwort nicht.
Ich bin ja sogar davon ünberzeugt, dass die "Probleme" über das Inplacing kommen, lässt sich aber doch sicher lösen ?

Ich habe, für meine pers. Weiterentwicklung, mir die Aufgabe gestellt dynamisch die Forms zu erstellen. Dazu wollte ich eine Anwendung im Outlookstil proggen.

Gibt es denn eine andere Möglichkeit ?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#4

Re: Werte in dynamisch erzeugtem Form ändern

  Alt 6. Jul 2009, 07:34
schau mal nach, was dein Delphi zu MDI-Anwendungen (Multiple Document Interface) sagt ... da befindet sich eine Programmvorlage unter Datei>Neu und die OH müßte zu MDI auch so einiges wissen
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Werte in dynamisch erzeugtem Form ändern

  Alt 6. Jul 2009, 07:35
Wie und wo erzeugst du die Insatnz?
Markus Kinzler
  Mit Zitat antworten Zitat
waldforest

Registriert seit: 8. Mai 2005
366 Beiträge
 
Delphi XE3 Enterprise
 
#6

Re: Werte in dynamisch erzeugtem Form ändern

  Alt 7. Jul 2009, 18:07
Hallo,
ich erzeuge das Form wie folgt im Main
Delphi-Quellcode:
PROCEDURE TMain.CreateMyFormInplaced(CONST aFormClass: TFormClass; CONST Alignment: TAlign);
VAR
  NewForm : Tform;
BEGIN
  IF Assigned(aFormClass) THEN
    BEGIN
      NewForm := aFormClass.Create(Self);
      NewForm.Visible := False;
      NewForm.BorderStyle := bsNone;
      NewForm.Align := Alignment;
      NewForm.Parent := Panel1;
      NewForm.Show;
      NewForm.AutoScroll:=True;
      NewForm.Width :=Panel1.Width;
      NewForm.Height :=Panel1.Height;
      FreeAndNil(FCurrentForm);
    // FCurrentForm.Free;
      FCurrentForm := NewForm;
    END;
END;
und rufe wie folgt auf

Delphi-Quellcode:
procedure TMain.JvOutlookBar1Pages0Buttons0Click(Sender: TObject);
begin
CreateMyFormInplaced(TDBUpdate, alClient);
end;
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.464 Beiträge
 
Delphi 12 Athens
 
#7

Re: Werte in dynamisch erzeugtem Form ändern

  Alt 8. Jul 2009, 09:01
Du erzeugst zwar ein Formular der Klasse TDBUpdate, weist aber der Variablen DBUpdate diese neue Instanz niemals zu.

1. Im OnCreate: DBUpdate := Self;
2. Im OnDestroy: DBUpdate := nil;
3. In MyUploadCallback nur etwas tun, wenn DBUpdate <> nil
  Mit Zitat antworten Zitat
waldforest

Registriert seit: 8. Mai 2005
366 Beiträge
 
Delphi XE3 Enterprise
 
#8

Re: Werte in dynamisch erzeugtem Form ändern

  Alt 8. Jul 2009, 17:32
Hallo,
super, genau da lag das Problem, nun funktioniert es.

Und wieder mit der Unterstützung des Forums etwas gelernt. vielen Dank !!!!
  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 00:18 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