الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مشكلة في الرسم في ديلفي 7

بدأه yamen ajjour في 9 أكتوبر 2009 · 1 رد · 665 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

مرحبا

عبحاول أعمل برنامج بيرسم على فورم بس ما اشتغل معي الرجاء المساعدة و شكراً مسبقاً

unit Unit2;

interface
ي
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,unit1, StdCtrls;

type
  TForm2 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Button1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure Button1MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form2: TForm2;
  available : boolean;

implementation

{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject);
begin
form2.Close;
unit1.Form1.Show;

end;

procedure TForm2.Button1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
available:=true;
canvas.MoveTo(x,y);
end;

procedure TForm2.Button1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
if available = true then
    canvas.LineTo(x,y);
end;

procedure TForm2.Button1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
available:=false;
end;

end.

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ColorGrd, StdCtrls;

type
  TForm1 = class(TForm)
    PenColor: TColorGrid;
    penSize: TScrollBar;
    Label1: TLabel;
    SolidPen: TButton;
    DashPen: TButton;
    DotPen: TButton;
    DashDotPen: TButton;
    DashDotDotPen: TButton;
    penclear: TButton;
    form1: TButton;
    procedure PenColorChange(Sender: TObject);
    procedure penSizeChange(Sender: TObject);
    procedure penStyleChange(Sender: TObject);
    procedure form1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
 uses unit2;
procedure TForm1.PenColorChange(Sender: TObject);
begin
unit2.Form2.canvas.Pen.Color:=PenColor.ForegroundColor;

end;

procedure TForm1.penSizeChange(Sender: TObject);
begin
unit2.Form2.canvas.pen.width:=pensize.position;
label1.caption:=Inttostr(pensize.position);
end;

procedure TForm1.penStyleChange(Sender: TObject);
begin
with unit2.Form2.canvas.Pen do
  begin
  if sender = solidpen then style:=pssolid
  else if sender = dashpen then style:=psdash
  else if sender = dotpen then style:=psdot
  else if sender = dashdotpen then style:=psdashdot
  else if sender = dashdotdotpen then style:=psdashdotdot
  else if sender = penclear then style:=psclear;


  end;
end;

procedure TForm1.form1Click(Sender: TObject);
begin
unit2.Form2.ShowModal;
end;

end.

Projects.zip

#2

السلام عليكم

أخي الكريم أنت لم تخطئ ولكنك شردت لأنك تستخدم الأحداث للفأرة على الزر وليس الفورم لاحظ ذلك في الكود المكتوب بالأعلى

يجب أن تكون الأحداث متعلقة بالفورم

ملاحظة لتبدأ بالرسم من الأفضل أن تقوم ببدأ الرسم من نقطة معينة ولتحديد ذلك بتعديل الحدث OnMouseDown كالتالي

procedure TForm2.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
 sPos: TPoint;
begin
 sPos.X:= X;
 sPos.Y:= Y;
 Canvas.PenPos:= sPos;
 available:=true;
end;

أتمنى التوفيق

مواضيع مشابهة