AGB  ·  Datenschutz  ·  Impressum  







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

Tastatur Eingabe im Canvas Objekt

Ein Thema von akurka · begonnen am 29. Okt 2014 · letzter Beitrag vom 3. Nov 2014
Antwort Antwort
Benutzerbild von akurka
akurka

Registriert seit: 30. Dez 2008
Ort: Schweiz, 8636 Wald ZH
81 Beiträge
 
Delphi 7 Personal
 
#1

AW: Tastatur Eingabe im Canvas Objekt

  Alt 31. Okt 2014, 11:43
Hallo bcvs
Und wenn ich das main case/sub case als Konsolen programm mache und erst bei der einzelnen Menüs (es sind im ganzen 13 Menüs + 5 Untermenü) als FormX.Paintbox definiere ?
Anton Kurka
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#2

AW: Tastatur Eingabe im Canvas Objekt

  Alt 31. Okt 2014, 11:54
Hallo bcvs
Und wenn ich das main case/sub case als Konsolen programm mache und erst bei der einzelnen Menüs (es sind im ganzen 13 Menüs + 5 Untermenü) als FormX.Paintbox definiere ?
Ich denke, Du solltest das ganze Programm neu aufsetzen!
Nein ganz so schlimm ist es nicht, aber als ich eben die Screenshots gesehen habe, hatte ich schon ein Dejavu. DOS-Programme funktionieren anders als Windowsprogramme. Was damals mit
Delphi-Quellcode:
repeat
..
until keypressed
gemacht wurde, ist heute mit Application.Run erledigt.
Du solltest dir zuerst einen PAP erstellen, vllt. gibt's den ja auch noch, und dann das als Windowsprogramm neu aufsetzen. (Beinahe)alles was Du damals für die Datenverarbeitung genutzt hast, ist heute auch noch verwertbar, aber auch hier kann ich nur zur Vorsicht raten, denn nicht nur der String hat sich geändert.

Was Deine "Alt-Oberfläche" angeht, die kann man meiner Meinung nach auch mit TLabel und TMemo nachbauen, U.U wäre da auch noch für TFrame ein effizenter Einsatz möglich.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
bcvs

Registriert seit: 16. Jun 2011
733 Beiträge
 
Delphi 12 Athens
 
#3

AW: Tastatur Eingabe im Canvas Objekt

  Alt 31. Okt 2014, 12:07
Genau,

und auf den Thread kannst meiner Meinung mach auch verzichten, wenn Du den CNC-Datenempfang in eine Methode deines Mainforms auslagerst, z.B. so: (zumindest vorerst, bis alles läuft)
Delphi-Quellcode:
type
  TForm1 = class(TForm)
  ...
  private
    procedure PerformCNCData;
  ...
  end;

procedure TForm1.FormShow(Sender: TObject);
begin
  PerformCNCData;
end;

procedure TForm1.PerformCNCData;
begin
  while true do begin
    byt := READBYTE;
    case (byt and $0F) of
    ...
    end;
    Application.ProcessMessages; // Hier sehr wichtig, damit das Programm noch bedienbar bleibt
  end;
end;
  Mit Zitat antworten Zitat
Benutzerbild von akurka
akurka

Registriert seit: 30. Dez 2008
Ort: Schweiz, 8636 Wald ZH
81 Beiträge
 
Delphi 7 Personal
 
#4

AW: Tastatur Eingabe im Canvas Objekt

  Alt 1. Nov 2014, 09:15
Hallo bcvs
Warum schlägst Du im Mainform doch die TForm?
Was hätte ich für Nachteile wenn ich das ganze als Konsolen programm
umschreibe ?
Mit wingraph kann ich doch auch graphiken machen.
Und die alte Programmstruktur kann ich praktisch unverändert übernehmen.
Jetzt sage ich etwas ketzerisches :
dem Benützer ist es egal ob das Programm im OOP oder Konsole geschrieben ist, hauptsächlich es läuft fehlerfrei.

Ich verstehe, wenn man etwas völlig neues schreibt, dass man es OOP
machen muss.
Aber in meinem Fall komme ich langsam zu der Ueberzeugung dass ich mir nur eine menge Probleme einhandle.

Was sind also die hauptsächliche Probleme in einem Konsolenprogramm
der auch Graphiken benützt ???

Die Frage geht auch an p80286

Gruss Anton
Anton Kurka
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#5

AW: Tastatur Eingabe im Canvas Objekt

  Alt 1. Nov 2014, 12:15
Natürlich kannst Du das machen, man kann auch mit einem LKW Brötchen holen gehen. Will sagen, ein Windowsprogramm tickt anders als ein Konsolenprogramm. Solange Du Dich darauf beschränkst eine Datei einzulesen und diese zu verarbeiten, bist Du mit einem Konsolenprogramm gut bedient. Kommt der Benutzer mit ins Spiel, mag man gerne darüber diskutieren, was besser ist, solange das Schema Benutzeraktion-Programmaktion-Benutzeraktion...... eingehalten wird. Wenn wie in Deinem Fall(?) parallel zur Benutzerinteraktion auch Daten eingelesen werden sollen, dann ist das Windowsprogramm ganz klar im Vorteil, weil es von vorneherein darauf ausgelegt ist. Ein weiterer Vorteil des Windowsprogramms ist die Skalierbarkeit der Oberfläche, die das Konsolenprogramm nicht bieten kann, da bist Du auf 80x25 Zeichen festgelegt (oder wieviele Zeilen kann der Dos-Prompt?).
Ich kann Dir nur nochmal ans Herz legen, zu überlegen was Dein Programm leisten soll, incl. der Benutzerschnittstelle, und dann solltest Du Dich entscheiden wie Du es umsetzen willst.

Ich kann Deine Bedenken nachvollziehen, mir ging's ähnlich, trotzdem kann ich nur sagen, es lohnt sich.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von akurka
akurka

Registriert seit: 30. Dez 2008
Ort: Schweiz, 8636 Wald ZH
81 Beiträge
 
Delphi 7 Personal
 
#6

AW: Tastatur Eingabe im Canvas Objekt

  Alt 1. Nov 2014, 16:06
Hallo p80286
Scheinbar sprichts Du aus Erfahrung.
Für mich ist es aber schwierig zu beurteilen welche Lösung besser ist. Da muss ich mich auf Dein Urteil verlassen.

Darf ich kurz skizziren was der alte Programm OptiNumeric(PC Programm unter win98) macht.

1.)
Die CNC sendet Meldungen an PC (rs232) über Istwerte,Sollwerte,Zustand der Eingänge und welche CNC-Satz gerade abgearbeitet wird. Die CNC kann auch völlig unbhängig vom PC laufen, wenn die rs232 abgekoppelt ist, läuft die CNC weiter mit gespeichertem CNC Programm.
2.)
Der Benützer kann neue Programme erstellen, jeder neu eingegebene CNC Satz wird sofort an die CNC weiter gesendet.Das gleiche gilt auch für
andere Eingabe wie Maschinenparameter, Regelkreisparameter usw.
3.)
Die Daten aus den empfangenen Meldungen werden angezeigt. Einerseits
als text oder als Graphik (gefahrene Strecke).
Die einzelne Menüs sind völlig unabhängig. Die Menuewahl wird an der CNC durch Betriebswahlschalter vorgenommen
(MeldungsByte Status.CNC.ZBETR).Es gibt keine Interaktion zwischen den Menüs.
---
Also das PC programm ist im prinzip ganz dumm.

Der Empfang der Meldungen im alten Programm ist durch Polling bewerkstelligt. Das Programm lauft immer in FullScreen, schon darum
weil z.Bsp die Istwerte sollen mit Abstand auch noch lesbar sein.
---
Mein Ziel ist genau die gleiche Funktionalität mit ins WinXP/win7 zu
portieren. Ich habe versucht das alte Programm mittels DOSBox laufen
lassen, das Ganze ist wegen der RS232 sehr unzuverlässig.
Darum habe ich die ganze Kommunikation versuchsweise in einen Thread
verlagert (vorläufig ohne Synchronisation). Und ziemmlich ausgiebig
mit Erfolg bis 230,4 kBaud getestet. Falls die Kommunikation nämlich durch Windows verzögert wird(was ja beim WinXP passiert) koppelt sich der CNC sofort ab (polling unter WinXP geht nicht).

Was meinst Du dazu ?

Ich möchte Dir noch eine PN senden.
Gruss Anton
Anton Kurka
  Mit Zitat antworten Zitat
Benutzerbild von akurka
akurka

Registriert seit: 30. Dez 2008
Ort: Schweiz, 8636 Wald ZH
81 Beiträge
 
Delphi 7 Personal
 
#7

AW: Tastatur Eingabe im Canvas Objekt

  Alt 2. Nov 2014, 16:43
Hallo bcvs
Gemäss Deinem Vorschlag habe ich den Programmteil (NCAS00)nctbas01 als methode von TForm2 sowie alle anderen zugehörige proceduren.
Und alle Bildzugriffe im Form2 auf Paintbox ergänzt.
Der wechsel von Form1 zu Form2 habe ich wie folgt gelöst:
Delphi-Quellcode:
case Status.CNC.ZBETR of
                    0..8,
                    10..14: begin
                              Form2.Show;
                              NCAS00.Form2.nctbas01;{ Modul 'NCTBAS00' }
                            end;
Die Istwert-Anzeigen im Menü REF/MAN funktionieren, aber das Edit feld
bleibt ohne fokus, somit ist keine Eingabe möglich.
OnkeyPress habe ich sowohl in Form1 wie auch in Form2.
was mache ich falsch ?

Uebrigens bin ich paralell dazu daran, dass Gleiche auch als Consoleprogramm zu machen, so kann ich es vergleichen.
Gruss Anton
Anton Kurka
  Mit Zitat antworten Zitat
Antwort Antwort

 

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 06:58 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