Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Designfrage: Kopieren von Tabellenzeilen (https://www.delphipraxis.net/117271-designfrage-kopieren-von-tabellenzeilen.html)

uligerhardt 15. Jul 2008 08:01


Designfrage: Kopieren von Tabellenzeilen
 
Hallo zusammen!

Konkret geht's um cxGrids in einer Delphi-Anwendung, aber ich glaube, das tut hier nichts zur Sache.

Unsere Anwender wollen in einigen Tabellen Zeilen/Sätze als Vorlage zur Erfassung ähnlicher, neuer Sätze kopieren können. Bevor ich da mit der Programmierung loslege, wollte ich mal fragen, wie ihr sowas löst:
  • Geht ihr über die Zwischenablage? Dann müsste man ja damit klarkommen, dass der Benutzer auch "ungeeignete" Clipboardinhalte ins Grid einzufügen versucht. D.h. haufenweise Fehlerprüfungen oder ein eigenes Clipboardformat registrieren oder so. Klingt aufwendig. :mrgreen:
  • Wie ist das Handling für den Benutzer? Welche Zeile muss er wann markieren, welchen Tasten in welcher Reihenfolge drücken etc.?
Das klingt jetzt vermutlich nicht allzu konkret. Aber alle Szenarien, die ich so durchgespielt habe, fühlen sich irgendwie "hakelig" an, drum hoffe ich auf geniale Inspirationen von eurer Seite. :mrgreen:

Danke schon mal im Voraus,
Uli.

mkinzler 15. Jul 2008 08:05

Re: Designfrage: Kopieren von Tabellenzeilen
 
Wird eine Datenbank zur Speicherung verwendet?

uligerhardt 15. Jul 2008 08:11

Re: Designfrage: Kopieren von Tabellenzeilen
 
Zitat:

Zitat von mkinzler
Wird eine Datenbank zur Speicherung verwendet?

Upsi. Die Details vergess ich immer. :D
Nein, keine DB. Ich will wirklich nur eine ganz platte Kopie im Grid. Prüfung auf Konsistenz, Dubletten usw. kommt beim Klicken auf OK.

mkinzler 15. Jul 2008 08:21

Re: Designfrage: Kopieren von Tabellenzeilen
 
Dann würde ich die Inhalte programmatisch von einer in die andere Zeile übertragen. Die Zwischenablage ist aus den genannten Gründen nicht geeignet.

uligerhardt 15. Jul 2008 08:36

Re: Designfrage: Kopieren von Tabellenzeilen
 
Zitat:

Zitat von mkinzler
Dann würde ich die Inhalte programmatisch von einer in die andere Zeile übertragen. Die Zwischenablage ist aus den genannten Gründen nicht geeignet.

OK, da sind wir uns ja einig. Dann bliebe noch die Frage des Handlings:
  • Benutze ich Strg-C/Strg-V? Eher nicht, ist ja für Clipboardoperationen reserviert.
  • Muss der Benutzer als erstes den Quellsatz markieren und ihn dann in einer zweiten Aktion einfügen?
  • Wenn ja: Stelle ich die Markierung optisch dar (z.B. wie die Marching ants in Excel)? Wie lange bleibt ein Satz als markiert ausgewählt?
  • ...
Ich suche da so einen etablierten Standard. Orientiert ihr euch an Excel?

mkinzler 15. Jul 2008 08:44

Re: Designfrage: Kopieren von Tabellenzeilen
 
Kenn deine Grid-Komponente nicht. Normalerweise kann man einstellen, dass eine komplette Zeile markiert wird.

Union 15. Jul 2008 08:48

Re: Designfrage: Kopieren von Tabellenzeilen
 
Solen die Sätze innerhalb eines Grids kopiert werden oder willst Du eine separate "Vorlagen"-Tablle führen? Sollen ein oder mehrere Sätze auf einmal kopiert werden? Wenn es nur um die Duplizierung eines Satzes geht, könnte man das mit einer Operation bzw. Tastendruck machen: Der aktuelle Satz wird durch Betätigen eines "Duplizieren"-Buttons oder eines Hotkeys oder eines Kontextmenüs dupliziert.

uligerhardt 15. Jul 2008 08:53

Re: Designfrage: Kopieren von Tabellenzeilen
 
Zitat:

Zitat von mkinzler
Kenn deine Grid-Komponente nicht. Normalerweise kann man einstellen, dass eine komplette Zeile markiert wird.

Ja, das geht mit einer Einstellung analog TListView.RowSelect. Aber die "normale" Zeilenmarkierung ändert sich ja, wenn ich die Zielzeile meiner Kopieraktion auswähle. Ich kann sie also nicht nehmen, um dem Benutzer die Quelle der Kopieraktion anzuzeigen (darum eben die animierte Geschichte in Excel, denke ich).

uligerhardt 15. Jul 2008 08:58

Re: Designfrage: Kopieren von Tabellenzeilen
 
Zitat:

Zitat von Union
Solen die Sätze innerhalb eines Grids kopiert werden oder willst Du eine separate "Vorlagen"-Tablle führen?

Alles innerhalb einer Tabelle.
Zitat:

Zitat von Union
Sollen ein oder mehrere Sätze auf einmal kopiert werden?

Einer reicht.
Zitat:

Zitat von Union
Wenn es nur um die Duplizierung eines Satzes geht, könnte man das mit einer Operation bzw. Tastendruck machen: Der aktuelle Satz wird durch Betätigen eines "Duplizieren"-Buttons oder eines Hotkeys oder eines Kontextmenüs dupliziert.

Hmmm, das klingt interessant. Der Satz würde dann ans Tabellenende angefügt. Ich bräuchte also auch noch Auf-/Ab-Buttons wie im Suchpfad-Editor in Delphis IDE. Das würde unseren Anwender vermutlich sowieso gefallen. :-)

Union 15. Jul 2008 09:06

Re: Designfrage: Kopieren von Tabellenzeilen
 
Ist denn die Positionierung der Sätze frei bestimmbar oder durch eine Sortierung definiert? Falls letzteres, würde doch ein duplizierter Satz direkt unterhalb des aktuellen eingefügt. Es wäre nur noich darauf zu positionieren und evtl. der Edit-Modus zu aktivieren. Im cxGrid gibt es übrigens auch noch die Möglichkeit, einen "New Line" Edit-Bereich zu definieren. Die Vorlagendaten könnte man dann da rein stellen.

alzaimar 15. Jul 2008 09:41

Re: Designfrage: Kopieren von Tabellenzeilen
 
Ich würde eine klassische GUI ohne Schnickschnack verwenden:
Button "Daten kopieren aus ..." nach dem Anklicken geht ein Fenster auf. Im Fernster eine kurze Anleitung, das Grid selbst sowie OK/Abbruch-Button. Aus dem Grid wählt man sich die zu kopierenden Zeile(n) aus. Du kannst im cxGrid ja einstellen, ob und welches Multiselect Du gerne hättest (eine Zeile, Mehrere Zeilen, Bereich, einzelne Zellen etc.). Nach der Auswahl auf OK klicken und dann die Datensätze anhand der Markierung erstellen.

So ist das in 1-2 Std abgewickelt. Persönlich finde ich das orthogonal und einfach (ohne Schnickschnack). Du kannst natürlich auch mit Animationen arbeiten, das dürfte aber länger dauern...

HeinzJ 15. Jul 2008 09:55

Re: Designfrage: Kopieren von Tabellenzeilen
 
Ich benutze für das Kopieren und die Weiterverwendung von Datensätzen ClientDatasets

http://www.delphi-forum.de/viewtopic...nsatz+kopieren

uligerhardt 15. Jul 2008 10:20

Re: Designfrage: Kopieren von Tabellenzeilen
 
Danke euch allen! Ihr habt mir ja einige gute Ideen geliefert, die ich unserer Fachabteilung vorschlagen kann. Mal sehen, was Gnade findet. :-)

marabu 15. Jul 2008 10:39

Re: Designfrage: Kopieren von Tabellenzeilen
 
Moin,

wegen der Konsistenz in der Benutzerschnittstelle würde ich darauf achten, dass markierte Zellen in einem Grid über die dem Benutzer vertraute Zwischenablage kopiert, ausgeschnitten, gelöscht und eingefügt werden können. Den Aufwand dafür schätze ich als äußerst gering ein, die Definition und Registrierung eines eigenen Formats mit eingerechnet.

Grüße vom marabu

uligerhardt 15. Jul 2008 12:21

Re: Designfrage: Kopieren von Tabellenzeilen
 
Zitat:

Zitat von marabu
wegen der Konsistenz in der Benutzerschnittstelle würde ich darauf achten, dass markierte Zellen in einem Grid über die dem Benutzer vertraute Zwischenablage kopiert, ausgeschnitten, gelöscht und eingefügt werden können. Den Aufwand dafür schätze ich als äußerst gering ein, die Definition und Registrierung eines eigenen Formats mit eingerechnet.

Hmm, ich hab's mir grad nochmal mir clipbrd.exe angeschaut, was Excel macht. Da wird eine Unmenge von Formaten angeboten. Mir würden ja zwei reichen: CF_TEXT, damit was "Sinnvolles" im Clipboard steht, und mein privates Format, damit ich intern effizient kopieren kann. Und den Textteil erledigt das cxGrid netterweise schon. Mal sehen...

Danke für die Anregung!


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