AGB  ·  Datenschutz  ·  Impressum  







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

create form wiederfinden problem

Ein Thema von G G · begonnen am 10. Jan 2006 · letzter Beitrag vom 10. Jan 2006
Antwort Antwort
G G

Registriert seit: 17. Jun 2004
192 Beiträge
 
#1

create form wiederfinden problem

  Alt 10. Jan 2006, 15:58
hallo nehmen wir folgendes an:


Code:
var      
  myForm: TForm2;      
begin      
  myForm := TForm2.Create(Self);      

   myForm.Show;      
end;
und mit dem in form2


Code:
type      
  tform2 = class(TForm)...      
  .      
  .      
  protected      
     procedure CreateParams(var Params: TCreateParams); override;      
  end;      


implementation      

procedure TForm2.CreateParams(var Params: TCreateParams);      
begin      
  inherited CreateParams(Params);      
  Params.Style := (Params.Style or WS_THICKFRAME);      
  Params.WndParent := GetDesktopWindow;      
end;
der ganz obere code wird ausgelöst wenn ich auf einer listbox ein item anklicke.
So, so weit so schön, aber nun will ich dass ich durch Params.caption den titel des jejeiligen fenster bestimmen kann. Da will ich abe rnun drin stehen haben was ich in der listbox angeklickt habe, gibts da irgdend ne schnelle methode dafür?

und nun meine 2te frage.
wenn nun jedes fenster sienen eigenen caption hat, wie kann ich nun schauen ob ein fenster schon offen ist oder ob dieses nochnich erstellt wurde, und falls das fenster shcon offen ist genau dieses dnan wieder nach oben bringen. ICh hab da keien ahnung wie man so einzelne fenster irgdnwie verwalten kann.Wenn mir da jemand code zeigt oder so wär ich sehr dankbar.

jede hilfe bringt mich wieter auch wnens nicht gleich zu allen fragen ist.Vielen vielen dank euch
  Mit Zitat antworten Zitat
Benutzerbild von tomsel
tomsel

Registriert seit: 8. Dez 2005
Ort: am Chiemsee
304 Beiträge
 
Delphi 7 Professional
 
#2

Re: create form wiederfinden problem

  Alt 10. Jan 2006, 17:06
Zitat:
So, so weit so schön, aber nun will ich dass ich durch Params.caption den titel des jejeiligen fenster bestimmen kann. Da will ich abe rnun drin stehen haben was ich in der listbox angeklickt habe, gibts da irgdend ne schnelle methode dafür?
form2.Caption := 'Die Caption, die ich haben will';
Zitat:
wenn nun jedes fenster sienen eigenen caption hat, wie kann ich nun schauen ob ein fenster schon offen ist oder ob dieses nochnich erstellt wurde, und falls das fenster shcon offen ist genau dieses dnan wieder nach oben bringen.
Initialisiere alle deine form1, form2, .., formX - Variablen zu Beginn mit NIL.
Wenn eines der Forms wieder freigegeben wurde, setze die entsprechende Variable ebenfalls wieder auf NIL.

Dann hast du immer die Kontrolle über die erzeugten und nicht erzeugten Forms, indem du die Variablen auf NIL überprüfst. Beispiel:

Delphi-Quellcode:
begin
...
form1 := nil;
form2 := nil;
...
if form1 = nil then begin
  form1 := tform1.Create(Application);
  form1.Caption := listbox1.items[listbox1.itemindex]
end else
  form1.BringToFront;
...
end;
Falls nicht jedes Form einer eigenen Variablen zugeordnet werden soll, sollte form1, form2 u.s.w. durch ein dynamisches Array ersetzt werden.
Ein Experte ist ein Mann, der hinterher genau sagen kann, warum seine Prognose nicht gestimmt hat. (Winston Churchill)
  Mit Zitat antworten Zitat
G G

Registriert seit: 17. Jun 2004
192 Beiträge
 
#3

Re: create form wiederfinden problem

  Alt 10. Jan 2006, 21:52
ah dien code hat mcih in ein paar sahcen sehr weitergebracht, aber ich glaub mein hauptproblem hab ich vll ncih so genau erklärt. Also es handelt sich nich so wie du denkst um mehrere forms1,2,3,4 usw sondern nur um ein mainform form1 und ein 2tes form form2 welches öfters geöffnet wird. Dies sieht im moment so aus:


Delphi-Quellcode:
function tform1.openwindow(id: string):string;
   var
    myForm: TForm2;
begin
           myForm:= TForm2.Create(application);

   myForm.Show;
        // showmessage( listbox1.items[listbox1.itemindex]) ;
          myform.Caption := listbox1.items[listbox1.itemindex];
myform.Memo1.Lines.Add('hallo'+listbox1.items[listbox1.itemindex]);

  end;
nun kann z.B annehmen dass jedes caption nur einmal vorkommt. Mithilfe von diesem möchte ich halt chekcen ob dass fenster schon exestiert, z.B alle "kopien" von tform2 durchchecken und schauen ob irgdnwo caption = 'blahblahblah' ist.

also wär mein wunsch , irgdnwie es möglcih zu machen, alle jemals erstellten und ncoh offenen "myform" durchzucheken?
nur ich seh da keienn weg dass die nummeriesiert sind doer so, und mti nem handle oder so komm ich grad auch ncih viel weiter.

danke
  Mit Zitat antworten Zitat
Benutzerbild von sniper_w
sniper_w

Registriert seit: 12. Dez 2004
Ort: Wien, Österriech
893 Beiträge
 
Delphi 6 Enterprise
 
#4

Re: create form wiederfinden problem

  Alt 10. Jan 2006, 22:16
Mit einem TObjectList Objekt kannst du alle TForm2 "merken" und später auch durchlaufen und deren Caption´s überprüfen. So in etwa:
Delphi-Quellcode:
uses ....,Contnrs ;
//....
  private
    { Private declarations }
  public
    { Public declarations }
    MyFormList: TObjectList;
    function FormExists( const myCaption: string):boolean;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  NewForm: TForm1;
begin
  NewForm := TForm1.Create( Application );
  MyFormList.Add( NewForm );
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  MyFormList := TObjectList.Create( True );
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  MyFormList.Free;
end;

function TForm1.FormExists(const myCaption: string): boolean;
var
  i:Integer;
begin
  Result := False;
  for i:=0 to MyFormList.Count-1 do
  begin
    if myCaption = TForm1(MyFormList.Items[i]).Caption then
    begin
      Result := True;
      Exit;
    end;
  end;
end;
Katura Haris
Es (ein gutes Wort) ist wie ein guter Baum, dessen Wurzel fest ist und dessen Zweige in den Himmel reichen.
  Mit Zitat antworten Zitat
Benutzerbild von tomsel
tomsel

Registriert seit: 8. Dez 2005
Ort: am Chiemsee
304 Beiträge
 
Delphi 7 Professional
 
#5

Re: create form wiederfinden problem

  Alt 10. Jan 2006, 22:21
kannste damit was anfangen:

Delphi-Quellcode:
function TForm1.SucheCaption(aCaption:string):tform;
var i:integer;
begin
        result := nil;
   for i:=0 to pred(application.Componentcount) do
      if application.Components[i] is tform2 then
         if tform(application.Components[i]).Caption = aCaption then
                            result := tform(application.Components[i])
end;
Die funktion sollte ein ergebnis <> nil liefern, wenn ein Form vom Typ tform2 mit der gesuchten Caption existiert. Das Ergebnis ist dann der Verweis auf das gefundene Fenster.
Ein Experte ist ein Mann, der hinterher genau sagen kann, warum seine Prognose nicht gestimmt hat. (Winston Churchill)
  Mit Zitat antworten Zitat
Benutzerbild von tomsel
tomsel

Registriert seit: 8. Dez 2005
Ort: am Chiemsee
304 Beiträge
 
Delphi 7 Professional
 
#6

Re: create form wiederfinden problem

  Alt 10. Jan 2006, 22:25
Zitat:
Mit einem TObjectList Objekt kannst du alle TForm2 "merken"
Ja, oder auch so.
Aber da er die Forms mit Application als Owner instantiiert, hat er diese Liste ja bereits zur Verfügung mit Application.Components.
Ein Experte ist ein Mann, der hinterher genau sagen kann, warum seine Prognose nicht gestimmt hat. (Winston Churchill)
  Mit Zitat antworten Zitat
Benutzerbild von tomsel
tomsel

Registriert seit: 8. Dez 2005
Ort: am Chiemsee
304 Beiträge
 
Delphi 7 Professional
 
#7

Re: create form wiederfinden problem

  Alt 10. Jan 2006, 22:28
@gg
So viele Buchstabendreher auf einem Haufen hab ich ja selbst noch nicht hingekriegt
Was ist los? Zu tief in's Glas geguckt?
Ein Experte ist ein Mann, der hinterher genau sagen kann, warum seine Prognose nicht gestimmt hat. (Winston Churchill)
  Mit Zitat antworten Zitat
Benutzerbild von tomsel
tomsel

Registriert seit: 8. Dez 2005
Ort: am Chiemsee
304 Beiträge
 
Delphi 7 Professional
 
#8

Re: create form wiederfinden problem

  Alt 10. Jan 2006, 22:42
würde nicht auch dieses gehen:

Delphi-Quellcode:
function tform1.openwindow(id: string):string;
var
  myForm: TForm2;
begin
  if listbox1.Objects[listbox1.itemindex] = nil then begin

    myForm:= TForm2.Create(application);
    myForm.Show;
    myform.Caption := listbox1.items[listbox1.itemindex];

    listbox1.Objects[listbox1.itemindex] := tobject(myform); // <------------------------!!

    myform.Memo1.Lines.Add('hallo'+listbox1.items[listbox1.itemindex]);

  end else begin

    myform := tform2(listbox1.Objects[listbox1.itemindex]);
    myform.bringtofront;

  end;

end;
Ein Experte ist ein Mann, der hinterher genau sagen kann, warum seine Prognose nicht gestimmt hat. (Winston Churchill)
  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 12: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