Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi StringGrid Zelle markieren (https://www.delphipraxis.net/36596-stringgrid-zelle-markieren.html)

Klarabella 22. Dez 2004 12:52


StringGrid Zelle markieren
 
hallo,
ich möchte dem Benutzer die Möglichkeit geben, in meinem StringGrid eine Zelle zu markieren und den Wert darin z.B. über Strg+C oder rechte Maustaste+"kopieren" zu kopieren, um ihn in der Zwischenablage zu haben.

Allerdings scheitert es im Moment schon an der Markierung... :roll:
Hab folgendes versucht:
Delphi-Quellcode:
if Button = mbRight then
  begin
    grSel.Top := Row;
    grSel.Left := Column;
    grSel.Right := Row;
    grSel.Bottom := Column;
    sgGarantie_Daten.Selection := grSel;
    popupMenu.Popup(Mouse.CursorPos.x, Mouse.CursorPos.y);
  end;
Da markiert der dann aber gar nischt...

und wie kann ich das kopieren in die Zwischenablage realisieren?

Kann mir jemand helfen?
Gruß, Klarabella :spin:

Kernel32.DLL 22. Dez 2004 13:22

Re: StringGrid Zelle markieren
 
Ich hab' zufällig grad' sowas in meinem Programm eingebaut:

Delphi-Quellcode:
var
  i, j: Integer;
  s: string;
begin
 { if firstentry = true then
  begin
   listbox1.items.add('Englisch :: Deutsch');
   firstentry := false;
  end;}
  if DBGrid1.SelectedRows.Count>0 then
    with DBGrid1.DataSource.DataSet do
    for i:=0 to DBGrid1.SelectedRows.Count-1 do
      begin
        GotoBookmark(pointer(DBGrid1.SelectedRows.Items[i]));
        for j := 0 to FieldCount-1 do
        begin
          if (j>0) then s:=s+' :: ';
          s:=s+Fields[j].AsString;
        end;
        Listbox1.Items.Add(s); //Oder wo du den String sonst haben willst
        //listboxadded := true;
        //StatusBar1.Panels[4].text := 'Einträge: ' + inttostr(listbox1.Items.count - 1);
        s:= '';
      end;
Das, was für dich uninteressant ist, habe ich mal ausgeklammmert. Zu beachten wäre noch, dass es sich hier um ein
DBGrid handelt, daher muss noch eine Anpassung an ein StringGrid vorgenommen werden.(Ich hoffe mal, das ist möglich. Ich bin mir nicht hundertpro sicher, müsste aber eigentlich). Übrigens muss bei dieser Lösung der User auf das StringGrid klicken (mit rechts) und dann bei einem PopUp-Menü auf kopieren. So hab' ich den Code bei mir eingebaut.

Folgender Code kopiert einen String in die Zwischenablage:

(die Unit "ClipBrd" muss mit eingebunden werden)

Delphi-Quellcode:
procedure Clipboard.SetTextBuf(Buffer: PChar);
Steht übrigens auch in der OH...


Keep on coding
Daniel

Klarabella 22. Dez 2004 13:45

Re: StringGrid Zelle markieren
 
Was ein Zufall :-D
Vielen lieben Dank... Das hilft mir zumindest bei der Recherche schon einmal etwas... Leider ist das DBGrid nicht ganz so einfach auf das StringGrid übertragbar... :(
Wenn also noch jemand eine Idee hat, immer men her damit!


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:35 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