AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Anzeigen eines bestimmten Forms

Ein Thema von Susanne · begonnen am 2. Jun 2005 · letzter Beitrag vom 2. Jun 2005
Antwort Antwort
Susanne

Registriert seit: 21. Mai 2004
Ort: Lage
232 Beiträge
 
Delphi 2005 Professional
 
#1

Anzeigen eines bestimmten Forms

  Alt 2. Jun 2005, 08:50
Hallo,

ich habe eine ListBox auf meiner Hauptform und wähle dann einen Eintrag davon aus.
dann hole ich mir den gewählten index mit
index:= listbox1.ItemIndex; und mit dem index hole ich mir den namen des eintrages
name:= listbox1.Items.ValueFromIndex[0]; und dann möchte ich die Form aufrufen, normalerweise ja mit
Form7.ShowModal; Problem: Wie kann ich diesen Aufruf ausführen, wenn der Name der Form in der Variablen name steht? Und ich möchte auch noch den Wert einer der Variablen dieser Form setzen.

Hat da einer vielleicht eine Idee?
Susanne
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.250 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Anzeigen eines bestimmten Forms

  Alt 2. Jun 2005, 09:02
Hai Susanne,

kannst Du das ganze nicht einfach mit einem Case-Of Block lösen?
Oder ein Array of TForm.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Benutzerbild von nailor
nailor

Registriert seit: 12. Dez 2002
Ort: Karlsruhe
1.989 Beiträge
 
#3

Re: Anzeigen eines bestimmten Forms

  Alt 2. Jun 2005, 09:10
ich würde auch zu einem array of TForm raten. alternativ geht auch FindComponent(), aber das mag ich persönlich nicht so.
Michael N.
http://nailor.devzero.de/code/sharpmath/testing/ --- Tests, Feedback, Anregungen, ... aller Art sehr willkommen!
::: don't try so hard - it'll happen for a reason :::
  Mit Zitat antworten Zitat
Susanne

Registriert seit: 21. Mai 2004
Ort: Lage
232 Beiträge
 
Delphi 2005 Professional
 
#4

Re: Anzeigen eines bestimmten Forms

  Alt 2. Jun 2005, 09:23
es ist nur so, dass ich dort verschiedene Listen einlese und anzeige, deshalb dachte ich, dass das so ganz gut wäre, wie ich mir das dachte und mir sonst auch nichts eingefallen ist, wie ich es besser machen könnte.
Susanne
  Mit Zitat antworten Zitat
Benutzerbild von nailor
nailor

Registriert seit: 12. Dez 2002
Ort: Karlsruhe
1.989 Beiträge
 
#5

Re: Anzeigen eines bestimmten Forms

  Alt 2. Jun 2005, 09:24
wie gesagt, FindComponent() nutzen, damit kann man Objekte nach Namen suchen
Michael N.
http://nailor.devzero.de/code/sharpmath/testing/ --- Tests, Feedback, Anregungen, ... aller Art sehr willkommen!
::: don't try so hard - it'll happen for a reason :::
  Mit Zitat antworten Zitat
marabu

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

Re: Anzeigen eines bestimmten Forms

  Alt 2. Jun 2005, 09:41
Hallo Susanne,

ohne Kommentar zu deinem Vorhaben hier eine technische Lösung für das Arbeiten mit Forms unter Benutzerkontrolle, wobei die Forms erst dann instanziiert werden, wenn sie gebraucht werden. Die automatische Instanziierung in den Projektoptionen abschalten und folgenden Code (angepasst an deine Verhältnisse) in die Form-Units einfügen:

Delphi-Quellcode:
...
initialization
  RegisterClass(TForm2);
finalization
  UnregisterClass(TForm2);
end.
Im Hauptformular (dem mit der Listbox) kannst du dann so vorgehen:
Delphi-Quellcode:
var
  fName: string;
  fClass: TFormClass;
  f: TForm;
begin
  fName := 'Form2';
  fClass := TFormClass(Classes.GetClass('T' + fName));
  if Assigned(fClass) then begin
    Application.CreateForm(fClass, f);
    f.ShowModal;
    f.Free;
  end else
    ShowMessage('oops!')
end;
Grüße vom marabu
  Mit Zitat antworten Zitat
barf00s
(Gast)

n/a Beiträge
 
#7

Re: Anzeigen eines bestimmten Forms

  Alt 2. Jun 2005, 09:48
Delphi-Quellcode:
uses
  Contnrs;

var
  xFormList: TObjectList;


begin
  xFormList := TObjectList.Create;
  xFormList.Add(myErstelltesForm);
  ...
end;


function GetForm(xList: TObjectList; const sFormName: string): TForm;
var
  iIndex: integer;

begin
  Result := nil;
  for iIndex := 0 to xList.Count - 1 do
    if TForm(xList[iIndex]).Name = sFormName then begin
      Result := TForm(xList[iIndex]);
      Exit;
    end;
end;

var
  xTermin: TTermin; //

begin
  xTermin := GetForm(xFormulare, 'frmTermin');
  if Assigned(xTermin) then begin
    xTermin.Button := 'Fenster'; // button? nich button.caption?
    xTermin.ShowModal;
  end;
end;
oder sowas in der art
  Mit Zitat antworten Zitat
Susanne

Registriert seit: 21. Mai 2004
Ort: Lage
232 Beiträge
 
Delphi 2005 Professional
 
#8

Re: Anzeigen eines bestimmten Forms

  Alt 2. Jun 2005, 10:35
wie mache ich das denn mit FindComponent? Ich komme damit irgendwie nicht zurande.

Also ich mit auf meiner Form3 und habe dort die Listbox mit dem Inhalt und in index ist der gewählte eintrag aus der listbox.

Delphi-Quellcode:
case index of
   0: begin
         Stempel:= listbox1.Items.Strings[0]; //Stempel:= 'Termin'

         //TTermin(FindComponent(Stempel)).Button:= 'Fenster';
         //TTermin(FindComponent(Stempel)).ShowModal;
      end;
wenn ich nun TTermin angebe dann funktioniert das, aber das kann doch je nach ausgewählten Stempel variieren, wie kann ich das denn variable davor setzen? Oder steh ich nur irgendwie auf meiner Leitung?
Susanne
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#9

Re: Anzeigen eines bestimmten Forms

  Alt 2. Jun 2005, 10:39
Moin!

1. FindComponent() ist eine Methode der Form und findet daher auch nur Elemente der Form und nicht andere Forms...
2. Schau dir mal TScreen an bzw. die globale Instanz Screen aus der Unit Forms an. Diese bietet dir als Eigenschaft Forms[] und FormCount...

MfG
Muetze1
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 12:51 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf