Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Ne Art Switch umsetzen (https://www.delphipraxis.net/42027-ne-art-switch-umsetzen.html)

Nisbo 12. Mär 2005 10:08


Ne Art Switch umsetzen
 
Moin Moin

ich habe bei mir im Programm mehere Links drinn welche über ein menü aufgerufen werden das in ansätzen so ausschaut:

Delphi-Quellcode:
 procedure MenuItem3Click(Sender: TObject);
 procedure MenuItem4Click(Sender: TObject);
 procedure MenuItem5Click(Sender: TObject);

.
.
.
.
.

procedure TForm1.MenuItem3Click(Sender: TObject);
begin Shellexecute(handle,'open',PChar('http://www.google.de'),'','',sw_show); end;

procedure TForm1.MenuItem4Click(Sender: TObject);
begin Shellexecute(handle,'open',PChar('http://www.google.com'),'','',sw_show); end;

procedure TForm1.MenuItem5Click(Sender: TObject);
begin Shellexecute(handle,'open',PChar('http://www.gmx.de'),'','',sw_show); end;
nun denke ich mir mal (da ich sowas ja auch von PHP kenne ;)) das man das auch besser lösen kann z.b. ala:

Delphi-Quellcode:
case seite of
  1: Shellexecute(handle,'open',PChar('http://www.google.de'),'','',sw_show);
  2: Shellexecute(handle,'open',PChar('http://www.google.com'),'','',sw_show);
  3: Shellexecute(handle,'open',PChar('http://www.gmx.de'),'','',sw_show);
end;
nur was bastelt man da rum ? und wie bekommt man es hin das jedes menueItem eine Zahl sendet z.b. 1 für google.de ?

Die Muhkuh 12. Mär 2005 10:25

Re: Ne Art Switch umsetzen
 
Hi,

du könntest dem Menüitem den Tag 1 geben, dem nächsten Tag2 etc.

Dann machst du eine Procedure:

Delphi-Quellcode:
procedure MenuClick(Sender: TObject);
begin
  case TMenuItem(Sender).Tag of
    1: shellexecute...
    2: ...
    ...
  end;
end;
diese Procedure weist du nun allen Menüitems zu.

KLS 12. Mär 2005 10:35

Re: Ne Art Switch umsetzen
 
Hierfür bietet sich die Tag Eigenschaft der MenuItem an.
Gib jeden MenuItem eine eigene Nummer. (Praktischerweise von 1 aufwärts)
Anschließend würde ich die URLs in ein Array of String packen.
nun weisst du allen MenuItems ein "Onclick" ereignis zu. (alle die selbe)

Delphi-Quellcode:
procedure TForm1.N1231Click(Sender: TObject);
const
  URLs : array[1..3] of String = ('http://www.google.de','http://www.google.com','http://www.gmx.de');
begin
  Shellexecute(handle,'open',PChar(URLs[TMenuItem(sender).Tag]),'','',sw_show);
end;

Nisbo 12. Mär 2005 10:37

Re: Ne Art Switch umsetzen
 
Gute Idee, aber funktioniert leider nicht :(

habe das jetzt so:

Delphi-Quellcode:
// Links aufrufen
procedure LinkOeffnen(Sender: TObject);
begin
  case TMenuItem(Sender).Tag of
    1: Shellexecute(handle,'open',PChar('http://www.google.de'),'','',sw_show);
    2: Shellexecute(handle,'open',PChar('http://www.google.com'),'','',sw_show);
    3: Shellexecute(handle,'open',PChar('http://www.gmx.de'),'','',sw_show);
  end;
end;
beim compilen bekomme ich die meldung das in der Zeile:

1: Shellexecute(handle,'open',PChar('http://www.google.de'),'','',sw_show);

Error: Type identifier not allowed here

Nisbo 12. Mär 2005 10:57

Re: Ne Art Switch umsetzen
 
ok das handle muß durch ner 0 ersetzt werden dann funktioniert es

Delphi-Quellcode:
// Links aufrufen
procedure LinkOeffnen(Sender: TObject);
begin
  case TMenuItem(Sender).Tag of
    1: Shellexecute(0,'open',PChar('http://www.google.de'),'','',sw_show);
    2: Shellexecute(0,'open',PChar('http://www.google.com'),'','',sw_show);
    3: Shellexecute(0,'open',PChar('http://www.gmx.de'),'','',sw_show);
  end;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:02 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz