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
 
bcvs

Registriert seit: 16. Jun 2011
736 Beiträge
 
Delphi 12 Athens
 
#22

AW: Tastatur Eingabe im Canvas Objekt

  Alt 31. Okt 2014, 09:41
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;
  Mit Zitat antworten Zitat
 

 

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 23:19 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