AGB  ·  Datenschutz  ·  Impressum  







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

StringGrid und Popupmenü

Ein Thema von dioony · begonnen am 8. Aug 2005 · letzter Beitrag vom 9. Aug 2005
 
dioony

Registriert seit: 18. Apr 2005
Ort: Oldenburg
18 Beiträge
 
Delphi 6 Enterprise
 
#1

StringGrid und Popupmenü

  Alt 8. Aug 2005, 15:15
Mittag!

Irgendwie hab ich nicht eine richtige Lösung hier gefunden, daher hoffe ich, dass ihr mir weiterhelfen könnt:

Ich habe ein StrinGrid und wenn man auf eine Zelle klickt öffnet sich durch das OnSelectCell- Ereignis ein dynamisches Popupmenü. Das funktioniert auch soweit. Das Problem besteht nun, wenn das Popupmenü länger ist als die Zeilen des StringGrids. Wenn ich dann nämlich nach unten gehen werden alle Zellen von dem angeklickten bis zum unteren Ende markiert.
Kann man das Markieren irgendwie unterdrücken?

So sieht das ganze aus:

Delphi-Quellcode:

procedure TForm5.StringGrid1SelectCell(Sender: TObject; ACol,
  ARow: Integer; var CanSelect: Boolean);
var items : array of TMenuItem;
var i: Integer;
begin


   if ARow>0 then
   begin
     if ARow<> StringGrid1.RowCount-1 then
     begin
        PopupMenu1.Items.Clear;
        SetLength(items,1);
        if ACol = 1 then
        begin
            SetLength(items,12);
            for i:=1 to 10 do
            begin
              items[i]:=TMenuItem.Create(self);
              items[i].Caption:=inttostr(i);
              if i = strtoint(StringGrid1.Cells[ACol,ARow]) then
              begin
                 items[i].Checked:=true;
              end;
              PopupMenu1.Items.Add(items[i]);
            end;
            SetLength(items,(High(items)+1));
            items[high(Items)]:=TMenuItem.Create(self);
            items[high(Items)].Caption:='andere Anzahl';
            PopupMenu1.Items.Add(items[high(Items)]);
        end;

        if ACol = 2 then
        begin

           SetLength(items,Form2.ListBox6.Count);
           for i:=0 to Form2.ListBox6.Count-1 do
           begin
             items[i]:=TMenuItem.Create(self);
             items[i].Caption:=Form2.ListBox6.Items[i];
             if Form2.ListBox6.Items[i] = StringGrid1.Cells[ACol,ARow] then
             begin
               items[i].Checked:=true;
             end;
             PopupMenu1.Items.Add(items[i]);
           end;
        end;
        if ACol = 3 then
        begin
           SetLength(items,Form2.ListBox8.Count);
           for i:=0 to Form2.ListBox8.Count-1 do
           begin
             items[i]:=TMenuItem.Create(self);
             items[i].Caption:=Form2.ListBox8.Items[i];
             if Form2.ListBox8.Items[i] = StringGrid1.Cells[ACol,ARow] then
             begin
               items[i].Checked:=true;
             end;
             PopupMenu1.Items.Add(items[i]);
           end;
        end;

        SetLength(items,(High(items)+1));
        items[high(Items)]:=TMenuItem.Create(self);
        items[high(Items)].Caption:='-';
        PopupMenu1.Items.Add(items[high(Items)]);


        SetLength(items,(High(items)+1));
        items[high(Items)]:=TMenuItem.Create(self);
        items[high(Items)].Caption:='Bild Löschen';
        PopupMenu1.Items.Add(items[high(Items)]);


        PopupMenu1.Popup(Mouse.CursorPos.X,Mouse.CursorPos.Y);
     end;
   end;
end;
gruß
Dioony
Iterativ arbeiten ist menschlich, rekursiv dagegen göttlich
  Mit Zitat antworten Zitat
 


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 22:25 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 by Thomas Breitkreuz