AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Zur Laufzeit erzeugten Popup.Items Prozeduren zuweisen
Thema durchsuchen
Ansicht
Themen-Optionen

Zur Laufzeit erzeugten Popup.Items Prozeduren zuweisen

Ein Thema von FlatG · begonnen am 14. Feb 2003 · letzter Beitrag vom 14. Feb 2003
Antwort Antwort
FlatG

Registriert seit: 31. Jan 2003
21 Beiträge
 
Delphi 5 Professional
 
#1

Zur Laufzeit erzeugten Popup.Items Prozeduren zuweisen

  Alt 14. Feb 2003, 10:45
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var
   dwResult     : DWord;
   hEnum        : DWord;
   anrStruct     : array [1..512] of NETRESOURCE;
   dwCount     : DWord;
   dwBufferSize : DWord;
   lIndex        : LongInt;
   pos        : Integer;
    reg        : string;
   NewItem       : TMenuItem;
begin
    try
        FillChar(anrStruct,SizeOf(anrStruct),0);
        anrStruct[1].lpRemoteName := PChar('WORKGROUP');
        dwResult := WNetOpenEnum(RESOURCE_GLOBALNET,RESOURCETYPE_DISK,0, @anrStruct[1], hEnum);
        if dwResult = NO_ERROR then
      begin
            Memo1.Lines.Clear;
            dwBufferSize := SizeOf(anrStruct);
            dwCount := DWord(-1);
            dwResult := WNetEnumResource(hEnum, dwCount, @anrStruct[1], dwBufferSize);
            for lIndex := 1 to dwCount do
            begin
                pos := AnsiPos('\\', anrStruct[lIndex].lpRemoteName);
                if pos > 0 then begin
                    reg := copy(anrStruct[lIndex].lpRemoteName, pos+2, length(anrStruct[lIndex].lpRemoteName)-2);
                    NewItem := TMenuItem.Create(Self);
                    NewItem.Caption := reg;
                    NewItem.Name := 'POP_' + IntToStr(lIndex);
                    PopupMenu1.Items.Add(NewItem);
               end
         end;
      end;
    finally
   WNetCloseEnum(hEnum);
   end;
end;
Der größte Teil des Codes stammt von Lucky und liest alle Rechnernamen im Netzwerk aus.. ich hab da noch die zeilen eingefügt, die bewirken, dass die 2 Backslashes vor den Namen verschwinden und die Zeile in der ich für jeden Rechnernamen ein neues PopupMenu.Item erzeuge

die Frage ist nun wie kann ich für jedes einzelne PopupMenu1.Item, dass ja dynamisch zur Laufzeit eingefügt wird ne Prozedur einbauen, die widerum etwas anderes bewirkt... ich habs wie oben schon drin steht mit

NewItem.Name := 'POP_' + IntToStr(lIndex); probiert und dann noch für POP_1 - POP_20 Prozeduren erstellt ala

Delphi-Quellcode:
procedure TForm1.POP_1Click(Sender: TObject);
begin
   Edit1.Text := 'Test3';
end;
für die eigentlich noch gar kein Item vorhanden ist, deshalb darf ich auch 20mal auf NEIN klicken wenn ich das Prog starten will, dat muss doch einfacher gehn (funktioniert eh nicht), ich bin son Delphi newb ich brauch für alles ewig, NOCH hoff ich (weitertrainier )
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

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

Re: Zur Laufzeit erzeugten Popup.Items Prozeduren zuweisen

  Alt 14. Feb 2003, 10:59
Hai,

soll für jeden Menüeintrag eine andere Funktion hinterlegt sein?

Wenn nein:
Ich löse das immer üger das Tag des Menü-Items.

Für alle Menüpunkte gibt es dann die selbe Funktion. In dieser werte ich dann das Tag aus.

Delphi-Quellcode:
procedure TFRM_Main.MyMenueClick (Sender: TObject);
begin
 Case (Sender as TMenuItem).Tag of
  1: //mach etwas
  2: //mach etwas anderes
 end;
end;
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
FlatG

Registriert seit: 31. Jan 2003
21 Beiträge
 
Delphi 5 Professional
 
#3
  Alt 14. Feb 2003, 11:29
Es soll für jeden Menüeintrag auf den man klickt die Caption des Menüeintrags in als Edit1.Text festgelegt werden, ich denke mal das kann man wohl in eine Funktion packen, ich probier mal..

Hmm aber jetzt wo ichs mit grad so anschaue, glaube ich gibts keine einheitliche funktion onClick fürs PopupMenu.. da gibts nur onChange und OnPopup, was aber nicht die gesuchten Ereignisse sind
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#4
  Alt 14. Feb 2003, 11:44
Zitat von FlatG:
Es soll für jeden Menüeintrag auf den man klickt die Caption des Menüeintrags in als Edit1.Text festgelegt werden, ich denke mal das kann man wohl in eine Funktion packen, ich probier mal..

Hmm aber jetzt wo ichs mit grad so anschaue, glaube ich gibts keine einheitliche funktion onClick fürs PopupMenu.. da gibts nur onChange und OnPopup, was aber nicht die gesuchten Ereignisse sind
Du musst es ja auch im OnClick des Menue-Items machen!

Delphi-Quellcode:
procedure TForm1.MyMenuClick (Sender: TObject);
begin
 Edit1.Text := (Sender As TMenuItem).Caption;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
 ndx : Integer;
 MyMenu : TMenuItem;
begin
 for ndx := 1 to 10 do
  begin
   MyMenu := TMenuItem.Create (self);
   MyMenu.Caption := 'Menü - ' + IntToStr (ndx);
   MyMenu.OnClick := MyMenuClick;
   PopupMenu1.Items.Add (MyMenu);
  end;
end;
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
FlatG

Registriert seit: 31. Jan 2003
21 Beiträge
 
Delphi 5 Professional
 
#5
  Alt 14. Feb 2003, 12:11
JAU habs jetzt hingekriegt, FAST

das einzige Problem, dass jetzt noch besteht ist die Tatsache, dass wenn der Rechnername 'TEST' ist und ich jetzt da draufklicke im Edit1-Feld 'TE&ST' auftaucht, oder aber bei 'TESTRECHNER' zB 'TESTRE&CHNER'

da tauchen also immer so komische & Zeichen auf, sieht ziemlich wahllos aus wo die auftauchen
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#6
  Alt 14. Feb 2003, 12:15
Zitat von FlatG:
JAU habs jetzt hingekriegt, FAST

das einzige Problem, dass jetzt noch besteht ist die Tatsache, dass wenn der Rechnername 'TEST' ist und ich jetzt da draufklicke im Edit1-Feld 'TE&ST' auftaucht, oder aber bei 'TESTRECHNER' zB 'TESTRE&CHNER'

da tauchen also immer so komische & Zeichen auf, sieht ziemlich wahllos aus wo die auftauchen
Setzt bei deinem PopUp-Menue die Eigenschaft AutoHotkeys auf FALSE.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
FlatG

Registriert seit: 31. Jan 2003
21 Beiträge
 
Delphi 5 Professional
 
#7
  Alt 14. Feb 2003, 12:22
VIELEN VIELEN DANK SHARKY.. sowas muss man ja erstmal alles wissen, werd mir also zukünftig mal die Hilfe für jede Eigenschaft genauer ansehen, scheinen doch alle irgendwo ihren Sinn zu haben
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#8
  Alt 14. Feb 2003, 12:25
Zitat von FlatG:
VIELEN VIELEN DANK SHARKY.. sowas muss man ja erstmal alles wissen, werd mir also zukünftig mal die Hilfe für jede Eigenschaft genauer ansehen, scheinen doch alle irgendwo ihren Sinn zu haben
Nix zu danken. Dafür haben wir ja dieses Forum.

Aber...... die Hilfe ist wirklich sehr hilfreich

Zumindest bei den "Standardkomponenten" lohnt es sich mal die gesamten Eigenschaften durchzugehen.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
janjan

Registriert seit: 16. Jan 2003
Ort: Bonn ("links über Königswinter ")
240 Beiträge
 
Delphi 4 Standard
 
#9
  Alt 14. Feb 2003, 13:19
Zitat von FlatG:
JAU habs jetzt hingekriegt, FAST

das einzige Problem, dass jetzt noch besteht ist die Tatsache, dass wenn der Rechnername 'TEST' ist und ich jetzt da draufklicke im Edit1-Feld 'TE&ST' auftaucht, oder aber bei 'TESTRECHNER' zB 'TESTRE&CHNER'

da tauchen also immer so komische & Zeichen auf, sieht ziemlich wahllos aus wo die auftauchen
Soweit ich weiß geben diese & Zeichen an, welcher Buchstabe im Menü unterstrichen wird...
  Mit Zitat antworten Zitat
Benutzerbild von BrainCode
BrainCode

Registriert seit: 18. Jan 2003
119 Beiträge
 
#10
  Alt 14. Feb 2003, 16:08
Exakt, man kann auch selbst festlegen, was unterstrichen werden soll, und zwar, indem man selbst ein "&" einfügt.
  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 02:13 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