AGB  ·  Datenschutz  ·  Impressum  







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

MainMenu - Doppelte Einträge verhindern

Ein Thema von Blackheart · begonnen am 4. Jan 2007 · letzter Beitrag vom 5. Jan 2007
Antwort Antwort
Blackheart

Registriert seit: 4. Mai 2005
846 Beiträge
 
Delphi 7 Enterprise
 
#1

Re: MainMenu - Doppelte Einträge verhindern

  Alt 5. Jan 2007, 12:37
Hallo Leute
Bin immer noch am werkeln.
Das mit der StringList klappt mittlerweile, nur mit den
Menu Einträgen krieg Ich nicht gebacken.
Ich stell mal den Quelltext rein und packe das Prog als Anhang.
Vieleicht guckt sich's mal einer an, und könnte Mir vieleicht noch Tips geben.

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Menus, Inifiles;

type
  TForm1 = class(TForm)
    MainMenu1: TMainMenu;
    Datei: TMenuItem;
    Hallo: TMenuItem;
    Ballo: TMenuItem;
    Button1: TButton;
    Label1: TLabel;
    N1: TMenuItem;
    OpenDialog1: TOpenDialog;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
    procedure DynamikMenuItemClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);

  private

  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  SL:TStringList;
  Ini: TIniFile;
implementation

{$R *.dfm}

Procedure DoubleItems; //Doppelte Items aus SL entfernen
var
i,j:Integer;
begin
i := 0;
  while i <= SL.Count-1 do
  begin
    for j := i+1 to SL.Count-1 do
    begin
      if SL.Strings[i] = SL.Strings[j] then
      begin
        dec(i);
        SL.Delete(j);
        break;
      end;
    end;
    inc(i);
  end;
end;

procedure TForm1.DynamikMenuItemClick(Sender: TObject);
begin
  Caption:=TMenuItem(Sender).Caption;
end;

procedure TForm1.FormCreate(Sender: TObject);
 var
 Ini: TIniFile;
 SC,i,j:Integer;
 NewItem : TMenuItem;
begin
  Sl:=TstringList.Create;
  Ini := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'Einstellung.ini');
  SC:=Ini.ReadInteger('Count','SC',0);
  for i:=0 to SC-1 do
  SL.Add(Ini.ReadString('MM','MainMenu'+IntToStr(i),'')); //Gespeicherte Einträge laden
  Memo1.Text:=SL.Text; //Probe
  for j := 0 to SL.Count-1 do //Entsprechende MainMenu Einträge erzeugen
  begin
  NewItem := TMenuItem.Create(Self);
  NewItem.Caption := SL[j];
  Datei.Add(NewItem);
  NewItem.OnClick:=DynamikMenuItemClick;
end;
end;

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
var
 i:Integer;
begin
  Ini := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'Einstellung.ini'); //Einträge speichern
  for i:=0 to SL.Count-1 do begin
  Ini.WriteString('MM','MainMenu'+IntToStr(i),SL.Strings[i]);
  Ini.WriteInteger('Count','SC',SL.Count);
  end;
  Ini.Free;
  Sl.Free;
end;

procedure TForm1.Button1Click(Sender: TObject);
 var
 NewItem: TMenuItem;
begin
  if (OpenDialog1.Execute) and (Datei.Count <13) then //Auf 10 Einträge begrenzen (3 Feste)
  begin
  SL.Text:=Trim(SL.Text); //leere Zeilen entfernen
  SL.Add(OpenDialog1.FileName); //Einträge hinzufügen
  DoubleItems; //Doppelte entfernen
  NewItem := TMenuItem.Create(Self);
  NewItem.Caption := Sl.Strings[SL.Count-1];
  Datei.Add(NewItem);
  NewItem.OnClick:=DynamikMenuItemClick;//Menueinträge erzeugen
  end
  else //Falls mehr als 10 Einträge
begin
  SL.Add(OpenDialog1.FileName);
  DoubleItems; //Doppelte entfernen
  NewItem := TMenuItem.Create(Self);
  NewItem.Caption := Sl.Strings[SL.Count-1];
  Datei.Add(NewItem);
  NewItem.OnClick:=DynamikMenuItemClick;
  Datei.Delete(4); //Ersten Eintrag im MainMenu löschen
  SL.Delete(0); //Ersten Eintrag im SL löschen
end;
  Memo1.Text:=SL.Text; //Probe
  Caption:=Inttostr(Datei.Count); //Probe
end;
end.
Angehängte Dateien
Dateityp: zip prog_536.zip (5,8 KB, 7x aufgerufen)
Blackheart
  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 10:16 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