Ich denke, du solltest dich erst mal ein bischen mit der Windows-Programmierung und der objektoriententierten Programmierung unter Delphi vertraut machen. Das war wahrscheinlich mal ein DOS-Programm. Das kann man aber nicht einfach 1:1 nach Windows umsetzen.
Unter Windows wird der Programmablauf von Messages gesteuert, auf die man in Delphi in den entsprechenden Ereignissen reagieren kann.
Was mir noch nicht klar ist:
Deine procedure nctbas01; ist eine einfache Procedure, keine Klassenmethode. Von wo wird die überhaupt aufgerufen? Das war in dem Dos-Programm wahrscheinlich die zentrale Ablaufsteuerung. Unter Windows brauchst du das nicht mehr, da Windows die Ablaufsteuerung in Form der Message-Loop schon mitbrint. Bu brauchst nur auf die verschiedenen Ereignisse zu reagieren.
Wo kommt das Status.CNC.ZBETR her?
StatusBild; ist ebenfalls ein einfache Procedure. Das muss eine Klassenmethode sein, die dann im OnPaint aufgerufen werden muss.
Hier mal ein Grundgerüst, wie es laufen könnte:
Mach ein neues Projekt auf und lege ein TEdit und ein TPaintbox auf die Form:
Delphi-Quellcode:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm1 =
class(TForm)
Edit1: TEdit;
PaintBox1: TPaintBox;
procedure Edit1KeyDown(Sender: TObject;
var Key: Word; Shift: TShiftState);
procedure PaintBox1Paint(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private-Deklarationen }
procedure StatusBild;
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
Edit1.SetFocus;
end;
procedure TForm1.Edit1KeyDown(Sender: TObject;
var Key: Word;
Shift: TShiftState);
begin
case key
of
vk_F1 :
begin
// mach wa mit F1
end;
vk_F2 :
begin
// mach wa mit F2
end;
// hier noch auf weitere Tasten reagieren
end;
end;
procedure TForm1.PaintBox1Paint(Sender: TObject);
begin
StatusBild;
end;
procedure TForm1.StatusBild;
{zeichnet das Bildgeruest fuer den 'Man'-Mode und beschriftet es}
begin
PaintBox1.Canvas.Brush.Color:= clRed;
PaintBox1.Canvas.RECTANGLE(2,2, BildB, BildH);
with PaintBox1.Canvas
do begin
Pen.Color:=clBlack;
Brush.Color:= clYellow;
// Application.ProcessMessages; // Nein: hier bitte bloß nicht aufrufen !!!!
// das hier sich wahrscheinlich Routinen, die irgendwo in einer Art Bibliothekt definiert sind
// Da müssten man noch den Canvas all zusätzlichen Parameter übergeben
Column(K_X3,255,0);
Row(K_Y1,0,511);
Row(K_Y6,0,K_X3);
Row(K_Y7,0,K_X3);
end;
end;