![]() |
Mehrer Zellen vom Stringgrid kopieren
Ich möchte in einem Stringgrid mehrere Zellen markieren (mit der Ctrl.-Taste) und dann wie bei Excel z.B. auf einmal kopieren. Gibt es da eine Möglichkeit?
|
Re: Mehrer Zellen vom Stringgrid kopieren
Klar geht das. Zuerst musst du deinem StringGrid einen message handler für WM_COPY annähen, dann musst du dir ein Format überlegen, welches du für die Zwischenablage verwenden willst. Wer soll denn die Daten aus der Zwischenablage konsumieren? Oder willst du ohne die Zwischenablage und nur innerhalb deines laufenden Programms arbeiten?
Grüße vom marabu |
Re: Mehrer Zellen vom Stringgrid kopieren
danke, marabu, dass du dich meinem thema annimst.
Ich brauche keine Zwischenablage, ich will innerhalb meiner Form (laufendem Progi) bestimmte Zellen des Grids markieren und dann nach unten kopieren. z.B. in markiere die Zellen 1,2 - 1,2 - 1,3 und will den inhalt dann in die Zellen 1,4 - 1,5 und 1,6 kopieren (auf einemal, so wie in excel) |
Re: Mehrer Zellen vom Stringgrid kopieren
Liste der Anhänge anzeigen (Anzahl: 1)
Das ist relativ einfach. Du solltest dir Tastenkürzel überlegen, die du für CUT, COPY, PASTE, DELETE verwenden willst und die nicht identisch mit den registrierten keys für die Clipboard-Funktionalität identisch sind. Ich schlage Strg+Umsch+C für COPY vor, die anderen analog. Diese Tasten kannst du dann im Ereignis OnKeyDown() behandeln.
marabu EDIT: Demo angehängt... |
Re: Mehrer Zellen vom Stringgrid kopieren
Liste der Anhänge anzeigen (Anzahl: 1)
danke zumächst mal für deine demo.
ich habe sie mir mal angeschaut, bin aber noch nicht so richtig schlau daraus geworden. ich habe nochmal genauer beschrieben, was ich eigentlich möchte, siehe Bild |
Re: Mehrer Zellen vom Stringgrid kopieren
Starte die Demo, markiere den zu kopierenden Bereich, drücke die Tastenkombination Strg+Umsch+C, markiere anschließend die obere linke Zelle des Zielbereiches und drücke die Tastenkombination Strg+Umsch+V.
marabu |
Re: Mehrer Zellen vom Stringgrid kopieren
Liste der Anhänge anzeigen (Anzahl: 1)
MARABU, das ist ja das kopieren von einzelnen Zellen, das konnte ich schon vorher mit der Maus ohne deinen Code.
Was ich aber will ist mehrer Zellen gleichzeitig markieren (wie im Excel mit der Ctrl-Taste) und dann diese markierten Zellen kopieren (in derselben Reihenfolge) habe noch mal mit Excel ein kleine Beispiel gemacht |
Re: Mehrer Zellen vom Stringgrid kopieren
Hallo,
marabus Code funktioniert schon, allerdings ist beim StringGrid im Edit-Modus das Markieren von Bereichen nur mit der Tastatur, nicht aber mit der Maus möglich. Die Optionen goEditing und goRangeSelect sind also - zumindest für die Bedienung mit der Maus - nicht kombinierbar. Gruß Hawkeye |
Re: Mehrer Zellen vom Stringgrid kopieren
ich will auch nicht unbedingt mit der maus markieren, mit der Tastatur ist das ok.
ich habe die demo von marabu probiert, kann auch einzelne zellen markieren und kopieren, schaff es aber nicht mehrere zellen auf einmal zu markieren, mit welcher tastenfolge macht man das? z.B. im Excel geht das mit dem Gedrückthalten von der Ctrl-Taste.... |
Re: Mehrer Zellen vom Stringgrid kopieren
habe es durch Zufall jetzt selbst herausgefunden, einfach die Shift-Taste gedrückt halten und mit der Pfeiltaste nach unten, vielen dank für eure hilfe
|
Re: Mehrer Zellen vom Stringgrid kopieren
Liste der Anhänge anzeigen (Anzahl: 1)
Hi folks,
hatte ich doch glatt die Unterstützung für die Maus vergessen. Im Anhang eine erweiterte Demo bei der auch die Selektion per Maus möglich ist. Grüße vom marabu |
Re: Mehrer Zellen vom Stringgrid kopieren
super marabu, es klappt mit der maus, musste nur noch bei stringgrid die 1 anhängen bei mir:
Delphi-Quellcode:
jetzt fehlt nur noch, dass man mit der rechten maustaste das copy und einfügen machen könnte.
procedure TDemoForm.StringGridMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin MouseDown := true; with StringGrid[b]1[/b] do MouseSelection.TopLeft := MouseCoord(X, Y); end; procedure TDemoForm.StringGridMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if MouseDown then with StringGrid[b]1[/b] do begin MouseSelection.BottomRight := MouseCoord(X, Y); Selection := MouseSelection; end; end; procedure TDemoForm.StringGridMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin MouseDown := false; end; aber das ist wohl mit delphi nicht möglich, oder?? |
Re: Mehrer Zellen vom Stringgrid kopieren
Liste der Anhänge anzeigen (Anzahl: 1)
Na gut - dann noch eine weiter aufgebohrte Version der Demo.
marabu |
Re: Mehrer Zellen vom Stringgrid kopieren
super, jetzt hab ich's so, wie ich es gewohnt bin. Allerdings konnte ich bei Shortcut nur das Deutsche auswählen, da ich ja deutsch. Delphi habe, wollte es aber gerne auf portugiesisch, z.B. Umschalt-Taste...
aber ok, ich habe jetzt Strg+C und Strg+P gemacht ein ganz grosses Dankeschön an dich Marabu für deine so grosszügige Hilfe... |
Re: Mehrer Zellen vom Stringgrid kopieren
ein grosser Dank an Dich Marabu für deine grosszügige Hilfe...jetzt wird es so, wie ich es will.
Allerdings kann ich nur zusammenhängende Zellen auswählen.. wenn ich jetzt dazwischen welche auslassen will (die ich nicht kopieren will) kann ich z.B. im Excel mit Strg-Taste halten und dann weiter unten weiter markieren. Das andere wäre noch, im popup-menu das Löschen der markierten Zellen (doGriddelete) einzufügen, wie wäre da die Prozedure? |
Re: Mehrer Zellen vom Stringgrid kopieren
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo.
Zitat:
Zitat:
Grüße vom marabu |
Re: Mehrer Zellen vom Stringgrid kopieren
so langsam bekomme ich ein perfektes Grid, nochmals vielen Dank, marabu
das Löschen und Einfügen werde ich bei meiner Applikation nicht anwenden, da ich Labels ausdrucke und das Blatt immer genau 40 Grid-Zeilen haben muss. Aber deine grid-demo kann ich bestimmt mit dem Einfügen und Löschen von Zeilen und Spalten sicher bald mal verwenden. |
Re: Mehrer Zellen vom Stringgrid kopieren
Ich habe doch noch 2 kleine Fragen:
1. wenn ich die Zellen mit der linken Maustaste markiere und ich will weiter nach unten fahren (Grid hat mehr Zeilen, als die Form zeigt), geht das "Ziehen" nach unten nicht....Cursor bleibt fix in der letzten sichtbaren Zeile... 2. Ich dachte wenn ich den Bereich markiere und dann kopieren auswähle, seien die Daten zwischengespeichert und ich könnte sie auch z.B. in mein Notepad ziehen, geht aber nicht.... |
Re: Mehrer Zellen vom Stringgrid kopieren
Zitat:
Zitat:
Grüße vom marabu |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:33 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