AGB  ·  Datenschutz  ·  Impressum  







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

Datenformular Oberfläche

Ein Thema von VkPenguin · begonnen am 7. Okt 2012 · letzter Beitrag vom 11. Okt 2012
Antwort Antwort
Seite 4 von 5   « Erste     234 5      
VkPenguin

Registriert seit: 23. Dez 2011
150 Beiträge
 
Delphi XE7 Architect
 
#31

AW: Datenformular Oberfläche

  Alt 9. Okt 2012, 15:16
Danke Ihr zwei, jetzt hab ichs. Das mit Drawtext war mir einfach entgangen
  Mit Zitat antworten Zitat
VkPenguin

Registriert seit: 23. Dez 2011
150 Beiträge
 
Delphi XE7 Architect
 
#32

AW: Datenformular Oberfläche

  Alt 10. Okt 2012, 20:39
Guten Abend, ich bin es nochmal

Es tut mir leid, dass ich euch schon wieder mit Fragen zu diesem Thema löchere, hatte eigentlich gehofft, jetzt allein weiterzukommen. Aber bei meiner Stringgrid gibt es noch ein Problem, mit dem ich nicht fertig werde. Ich möchte die Eingaben des Nutzers kontrollieren, wenn er eine Zelle Editiert (in manchen Zellen sind beispielsweise nur die Werte 1,2,3 erlaubt). Bisher habe ich das mit SetEditText abgefangen, aber wenn die Zelle noch leer ist und der Benutzer sie gerade erst anklickt kommt eine Fehlermeldung, da die leere Zelle weder den Wert 1 noch 2 oder 3 hat. Ich bräuchte also ein Event, welches erst ausgelöst wird, wenn der Nutzer mit seiner Bearbeitung fertig ist.
Aber es gibt sowohl unterschiedliche Eingabemöglichkeiten - direkt über das Programm, manuell vom Nuter oder STRG+V (Was ich mit OnKeyDown abfange und dann auf alle selektierten Zellen übertrage, damit bin ich auch nicht wirklich zufrieden, es funktioniert manchmal nämlich aus irgendeinem Grund nicht...) - als auch verschiedene Arten, das Editieren zu beenden (Selektion eines anderen Feldes, Tab, Enter, Selektion eines anderen Objekts oder sogar Form/Programms...), dass ich es, egal wie ich es auch versuche, nie schaffe, alle Möglichkeiten sauber und zuverlässig abzufangen.
Ich habe schonmal nach "On Edit" und ähnlichem gesucht, konnte aber leider nicht viel hilfreiches finden. Auf dieser Seite ist von WM_ACTIVATE und WM_KILLFOCUS die rede.... Auf der Suche danach bin ich auf das gestossen; ich glaube, das ist es, was ich suche. Meine bisherigen Versuche damit waren allerdings erfolglos - hat vielleicht jemand einen Tipp oder besseren Lösungsansatz?
  Mit Zitat antworten Zitat
Hobby-Programmierer

Registriert seit: 19. Jan 2006
Ort: München
392 Beiträge
 
Delphi XE Starter
 
#33

AW: Datenformular Oberfläche

  Alt 10. Okt 2012, 21:10
Nabend ...,
der InplaceEditor arbeitet manchmal, sagen wir mal, gewöhnungsbedürftig
Aber ich halte den Ansatz, Eingaben bzw. rein kopierte Strings über den Editor zu filtern, für falsch. Ich würde generell auf den Editor verzichten und zb. bei Doppelklick ein separates 'Eingabefenster' öffnen. In diesem könntest du dich austoben, danach würde ich die gemachten Eingaben prüfen, bearbeiten was auch immer und gleich in die Db wegsichern und erst dann die markierten Zellen schreiben.

Edit: ok, Doppelklick ist natürlich blöd bei Mehrfachauswahl
also solltes du dann ne bestimmte Taste abfangen zum öffnen des Eingabefensters zb. Tab oder zirkumflex oder so.
Mario
'Lesen Sie schnell, denn nichts ist beständiger als der Wandel im Internet!'

Geändert von Hobby-Programmierer (10. Okt 2012 um 21:15 Uhr)
  Mit Zitat antworten Zitat
VkPenguin

Registriert seit: 23. Dez 2011
150 Beiträge
 
Delphi XE7 Architect
 
#34

AW: Datenformular Oberfläche

  Alt 10. Okt 2012, 21:25
Der Plan war aber (Da die Stringgrid sehr groß werden kann), dass man beliebig viele Zellen markieren kann und dann in alle markierten gleichzeitig schreibt/kopiert etc...

Oder hab ich Dich falsch verstanden?

*Edit* Wie meinst du das denn mit dem separatem Eingabefenster? Wenn wirklich ein neues Fenster dafür aufgeht verliert man ja die Übersicht... Außerdem ist es sehr wichtig, dass alles möglichst schnell geht
  Mit Zitat antworten Zitat
Hobby-Programmierer

Registriert seit: 19. Jan 2006
Ort: München
392 Beiträge
 
Delphi XE Starter
 
#35

AW: Datenformular Oberfläche

  Alt 10. Okt 2012, 21:41
Ich glaube du denkst zu kompliziert.
Ich meinte: Du markierst alle zu editierenden Zellen wie bisher, aber statt den InplaceEditor zu benutzen öffnest du ein neues Eingabefenster, machst die Eingabeoperationen und schließt des wieder. Beim schließen wird die Db geschrieben sowie die Eingaben an das Grid weitergereicht.
Dieses besagte Eingabefenster musst du natürlich selbst erstellen, praktisch dein eigener Editor. der Vorteil ist natürlich das du des auf deine Bedürfnisse quasi massschneidern kannst.

Edit: vielleicht könntest du ein Demo von deinem programm kurz hier anhängen. Ich kann mir ehrlich gesagt immer noch net vorstellen wie du die tausende zellen darstellst.
Mario
'Lesen Sie schnell, denn nichts ist beständiger als der Wandel im Internet!'

Geändert von Hobby-Programmierer (10. Okt 2012 um 21:49 Uhr)
  Mit Zitat antworten Zitat
VkPenguin

Registriert seit: 23. Dez 2011
150 Beiträge
 
Delphi XE7 Architect
 
#36

AW: Datenformular Oberfläche

  Alt 10. Okt 2012, 22:27
So, nach ein bisschen basteln funktioniert es jetzt (fast) wie gedacht. Jetzt muss ich es nur noch schaffen, dass die Selektion bei Doppelklick/Enter nicht aufgehoben wird.
Vielen Dank nochmal für Deinen Tipp, dank Dir ist endlich der Groschen gefallen. Manchmal fragt man sich wirklich, wieso man es nicht gleich so gemacht hat

*Edit* Achja. Ich hab für das Eingabefenster ein Edittextfeld umfunktioniert - es klappt auch -, aber wenn ich Enter drücke kommt immer ein Fehlermeldungsgeräusch, das ist etwas seltsam. Ist mir aber schon mehrfach bei Edittexten aufgefallen

Geändert von VkPenguin (10. Okt 2012 um 22:33 Uhr)
  Mit Zitat antworten Zitat
Hobby-Programmierer

Registriert seit: 19. Jan 2006
Ort: München
392 Beiträge
 
Delphi XE Starter
 
#37

AW: Datenformular Oberfläche

  Alt 10. Okt 2012, 22:32
Delphi-Quellcode:
procedure TForm1.DeinSGKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  if (Key = VK_RETURN) then begin
    frm_Eingabe.Show; // eigenes Editorfenster
  end;
end;
Sollte so funktionieren.
Edit: Du solltest das Eingabefenster aber Modal anzeigen.
Mario
'Lesen Sie schnell, denn nichts ist beständiger als der Wandel im Internet!'

Geändert von Hobby-Programmierer (10. Okt 2012 um 22:45 Uhr)
  Mit Zitat antworten Zitat
VkPenguin

Registriert seit: 23. Dez 2011
150 Beiträge
 
Delphi XE7 Architect
 
#38

AW: Datenformular Oberfläche

  Alt 10. Okt 2012, 22:55
So ähnlich siehts bei mir auch aus. Nur, ähm, modal?
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#39

AW: Datenformular Oberfläche

  Alt 11. Okt 2012, 07:16
MyForm.ShowModal => Das Formular bekommt alle Maus- und Tastenereignisse exklusiv, bis man es schließt.
MyForm.Show => Das Formular ist sichtbar und bekommt alle Maus- und Tastenereignisse, wenn man es selektiert (anklickt).
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#40

AW: Datenformular Oberfläche

  Alt 11. Okt 2012, 09:01
... aber wenn ich Enter drücke kommt immer ein Fehlermeldungsgeräusch, das ist etwas seltsam. Ist mir aber schon mehrfach bei Edittexten aufgefallen
Durch eine Zuweisung von #0 an Key bleibt das Fehlergeräusch aus:

Delphi-Quellcode:
procedure TFormMain.Edit_FeldKeyPress(Sender: TObject; var Key: Char);
begin
     IF Key = #13 THEN
     BEGIN
          IF TextIstZahl(Edit_Feld.Text) THEN
          BEGIN
               Do.Something; // oder mach was anderes ...
               Do.AnotherThing;
               // ... weise irgendwas irgendwem zu oder mach was du willst ...
          ELSE ShowMessage('fehlerhafte Eingabe: Nur Ziffern erlaubt ...');
     END;

     Key := #0;
end;
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 5   « Erste     234 5      


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 09:05 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