Fragensteller
Visual Fox Pro Masken (Form) erstellen

Frage
-
Ich muss ein altes Projekt auf Visual Fox 9 umbauen.
Nun wenn ich eine Masek (Form) automatisch erstellen lasse kann ich nicht Titel oder so löschen, kommt immer die Meldung mit Klassenfehler. Dann erscheint eine Buttonreihe, wo kann ich deren Code sehen und wie kann ich einen einzelnen Button aus dieser Reihe löschen.
Aller Fragen kurzer Sinn: Wo finde ich eine Anleitung wie man diese Masken programmiert und erstellt.
Danke
Peter
Freitag, 12. August 2016 07:44
Alle Antworten
-
"Die Meldung <g class="gr_ gr_10 gr-alert gr_spell gr_run_anim ContextualSpelling ins-del multiReplace" data-gr-id="10" id="10">mit</g> Klassenfehler."
Eine...Welche?
Buttonreihe: Ich denke Du hast Assistenten benutzt und die benutzen FFC Klassen wie z.B. die Navbar. Einzelne Buttons daraus löschen könnte die Funktionsfähigkeit der Navigationsbar beeinträchtigen, z.B.zu Fehlern wegen Referenzierung nicht mehr existeter Buttons führen.
Und ja, wenn man eine Klasse aus z.B. diversen Buttons oder allgemein mehreren Controls zusammensetzt und das dann insgesamt auf ein Formular zieht, dann ist es wie ein einzelnes Control, man kriegt alles oder nichts. Du könntest die zugrunde liegenden Klassen ändern, aber damit änderst Du sie ganz allgemein und nicht nur in diesem Projekt. Eine Möglichkeit zur Änderung in jegliche Richtung (Erweiterung oder Reduktion) ist eine Ableitung der Klasse(n). In Deiner eigenen Ableitung, die z.B. dann nicht in HOME() sondern in Deinem Projektordner liegt, kannst Du dann werkeln, wie Du möchtest, z.B. Buttons aus dem Sichtbereich verschieben, RETURN .F. ins Init setzen...
Selbst wenn es Dir unwahrscheinlich erscheint, dass Du je noch ein Projekt bekommst, was diese von Assistenten generierten Formulare enthält, wenn doch, dann hättest Du hintenrum und im Voraus schon deren Navigationsbars abgeändert, wenn Du statt Klassenableitungen die FFC Klassen selbst änders, sowas ist also nie im Sinne der Erfinder.
Aber gehen wir noch ein paar Schritte zurück, ehe Du jetzt mit Klassenableitungen arbeitest: Wenn Du eine Anwendung erweiterst, würde ich erst mal in bestehende Formulare schauen und sehen, auf welchen Klassen sie basieren, oftmals ist da ein Gesamtkonzept implementiert über einen Formhandler z.B., und wenn man weitere Formulare an dem vorbei programmiert weiß er nicht über alle Formulare bescheid und dann können auch Bereiche der Anwendung aufhören zu funktionieren, die evtl allgemeine Fenstersteuerung vornehmen, aber nur für dem Formhandler bekannte Formulare. Angefangen von der Zahl der gestarteten Formulare über allgemeines Docking, Verteilung der Formulare auf dem Desktop etc.
Du scheinst Dich noch nie oder lange nicht mehr mit dem Formulardesigner befasst zu haben. Was wäre da eine gute Referenz? Schau mal in die Hentzenwerke Bücher nach Grundlagenbüchern, ich denke nicht, dass es ein Buch nur über Formulare gibt, das Thema ist sehr ergiebig in Dingen wie User Experience und gutes User Interface Design, aber weniger technisch, Formulare sind ein Rahmen, in den Du Controls einbettest. Erscheinungsbild, Captions etc. wird von Control Properties bestimmt. Damit muß man sich dann halt auskennen oder sich einarbeiten. Die VFP Hilfe bietet Dir die komplette Referenz zu allen Controls, aber die Liste der Controls ist endlich. Schau Sie Dir einmal an, sie werden Dir bekannt vorkommen, jegliche Userinterfaces nutzen dieses Controlkonzept seit Ewigkeiten und da gibt es nichts neues zu lernen darüber wofür man eine Textbox oder ein Grid verwendet, oder einen Button.
Wie man sie verwendet? Das grundlegenste Konzept der Datenbindung ist Controlsource, aber so lange Du schon mit VFP arbeitest kann ich nicht glauben, dass Du das noch lernen mußt. Vielleicht mußt Du das neu lernen, wenn Du tatsächlich nur DOS Screens kennst.
Tschüß, Olaf.
Olaf Doschke - TMN Systemberatung GmbH
- Bearbeitet Olaf Doschke Freitag, 12. August 2016 16:04
Freitag, 12. August 2016 10:10 -
Die MSDN Foren mögen mich scheinbar nicht. Das überflüssige HTML am Anfang meiner Antwort kam in einigen meiner letzten Antworten, auch im englischen Bereich. Läßt sich dann zwar wieder wegeditieren, aber kommt dann gerne und an noch mehr Stellen wieder zurück...
Um das nochmal klar zu wiederholen, Du sagtest: Die Meldung mit Klassenfehler und ich fragte: Eine... Welche? Du sprichst wie von einem jedermann bekannten Fehler, auf den Du jetzt den Fix oder Workaround suchst.
Und um noch etwas zuzufügen: Vielleicht hast Du eine gewisse Herangehensweise von Screens im Hinterkopf, für die Du eine analogie suchst. Wenn Du also eine konkretere Frage hast, dann kannst Du dafür auch eine konkretere Antwort kriegen. Eins weiß ich nur schwammig, ohne je einen Screen gemacht zu haben: Wenn Du in Screen Code etwas wie READ programierst, um auf die Eingabe einer Textbox bzw. eine @GET zu warten, dann ist das etwas, was nur zur Abwärtskompatibilität existiert und nicht so nutzbar ist in Windows Forms. Stattdessen hat eine Textbox ein paar events, die ablaufen, wenn man eine Eingabe mit Return oder Tab abschließt oder mit der Maus woanders hin clickt.
Solche Dinge haben keine Analogie zu Screens und bedeuten, dass Du Dir eine ganz andere Herangehensweise angewöhnen mußt, um ein Formular Nutzerfreundlich zu gestalten und den Nutzer an die Hand zu nehmen, was er als nächstes tun sollte. Das offensichtlich zu machen, indem Du da automatisch den Fokus drauf legst und andere Bereiche sperrst oder aber eine breite Palette an Möglichkeiten/Werkzeugen zur Verfügung zu stellen, wie z.B. die Malwerkzeuge in einem Malprogramm, die allesamt beliebig nutzbar und keine solche Nutzungsvorschrift in Form eines Ablaufplans/Workflows geben.
Tschüß, Olaf.
Olaf Doschke - TMN Systemberatung GmbH
Samstag, 13. August 2016 14:12 -
Hallo Olaf
Danke fü Deine Antwort. Ich habe eine Original Fox 5 Kiste ausgegraben und in der hatte es alle Bücher und in einem hat es ein gute Anleitung, etwa 50 Seiten, die ich durcharbeite.
Der Hinweis wegen dem @get ist eigentlich logisch. Ausserdem die Masken automatisch zu erstellen bringt nix, weil dann alles in einer Klasse ist.
Ich habe viel mit Delphi gearbeitet und da ist das mit dem OOP etwas einfacher.
Werde nun dieser paar Seiten durcharbeiten und mir dann erlauben, sollte ich noch Fragen haben, mich dann in diesem Forum nochmals zu melden.
Aber es ist ein Umdenken erforderlich. Im Kopf weiss ich was ich will, es gilt nun dies so umzusetzen.
Danke und ich melde mich nach dem Studium der Seiten wieder, sollte ich noch Fragen haben.
Peter
Montag, 15. August 2016 09:02