يعطيكم العافية
عندي سؤال
عندي فورم الحدود تبعه bsnone
و يوجد بداخله Panel
كيف يمكن لي الآن عندما أنقر على Panel و أحرك
أغير مكان الفور على الشاشة
شكرا لكم
يعطيكم العافية
عندي سؤال
عندي فورم الحدود تبعه bsnone
و يوجد بداخله Panel
كيف يمكن لي الآن عندما أنقر على Panel و أحرك
أغير مكان الفور على الشاشة
شكرا لكم
السلام عليكم
في حدث OnMouseDown الخاص بالبنل ضع الكود التالي :
ReleaseCapture; SendMessage(Form1.Handle, WM_SYSCOMMAND, 61458, 0);
و هذاكود آخر للعلم الكود لايسمح للبرنامج بتعدي حدود الشاشة
If ssLeft in Shift Then
Begin
ReleaseCapture;
Perform(WM_SYSCOMMAND, $F012, 0);
If Top < 0 then Top := 0;
If Top + Height > Screen.Height then Top := Screen.Height - Height;
If Left < 0 then Left := 0;
If Left + Width > Screen.Width then Left := Screen.Width - Width;
end;
تم تعديل هذه المشاركة بواسطة سيف الدين 2 في 7 مارس 2005 في 14:21
..................بسم الله الرحمن الرحيم..................
وتعاونوا على البر والتقوى ولا تعاونوا على الإثم والعدوان
.............................................................................................................................
سلسلة تعلم برمجة Pascal , تعلم اساسيات الباسكال
التحكم بمنفذ الطابعة عن طريق الدلفي
سلسلة دروس تعلم قواعد بيانات Midas
أفكار سريعة, مجموعة شفرات صغيرة وفاعله لدلفي
كتب + مواقع ::: مراجع مهمة للغة دلفي, مجموعة كتب مجانية + مواقع مفيدة
مكتبه الأكواد, أكواد وبرامج دلفي
.............................................................................................................................

رائععععععععة ..
شكرا 02/11/2004
ملاحظة ,, وينك مشتقلك
اشتاقت لك العافية استاذي عروة ... اليومين هذي ... مشغول شوي ... : )
للأسف ما قدرت أبدا أستفيد من أي تابع
أخي 02/11/2004 كيف ممكن أستخدم التابع وضعته في OnMouseMove لكن سلامتك
أخي سيف الدين شكرا جدا لك و فعلا هذا طلبي لكن أنا ما عرف استخرج التابع يلي استخدمه
أنا ببرمج بواسطة Borland C++ Buldier المبنية على الباسكال
شكرا لكم
عرض مغري وجاري التجريب وجزاكم الله خيرا اخواني
السلام عليكم
هل حل الأمر ولا لسه على العموم هناك كومبونيت موجود في مجموعة Flatstyle ممكن يساعدك دور عليه في www.torry.net
انا لست خبيرا في Borland C Builder . ولكن حتما المشكلة أننا يجب أن نغيير بعض العبارات لتتوافق مع C++ Builder ,
Borland C Builder ليست عندي حاليا , على كل حال . جرب أن تبحث في الهلب على الكلمتين :
ReleaseCapture
و WM_SYSCOMMAND
قد تجد امثله لهما
هذا مثال مكتوب بلغة سي ++ ل Borland C++ Buldier...
المثال هو ترجمة للكود الذي وضعه الأخ سيف الدين 2.
بارك الله فيه..
//---------------------------------------------------------------------------
//----------------------- Main File : Main.Cpp-----------------------
#include <vcl.h>
#pragma hdrstop
#include "Main.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
void __fastcall TForm1::WMNCHitTest(TMessage &Msg)
{
TForm::Dispatch(&Msg);
if (Msg.Result == HTCLIENT ) Msg.Result = HTCAPTION;
}
//---------------------------------------------------------------------------//---------------------------------------------------------------------------
//-------------------- Header File : Main.h -----------------------
#ifndef MainH
#define MainH
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ExtCtrls.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
void __fastcall Panel1MouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y);
private: // User declarations
void __fastcall WMNCHitTest(TMessage &Msg);
public: // User declarations
__fastcall TForm1(TComponent* Owner);
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(WM_NCHITTEST, TMessage, WMNCHitTest)
END_MESSAGE_MAP(TForm)
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endifB)
تم تعديل هذه المشاركة بواسطة ikossan في 13 مارس 2005 في 23:36
سأتغيب عن المنتدى وستكون لي زيارات خفيفة بين الحين و الحين
يا صاحب الهم إن الهم منفرج.....................أبشر بخير فإن الفارج الله.
اليأس يقطع أحيانا بصاحبه..........................لا تيأس فإن الكافي الله.
الله يحدث بعد العسر ميسرة.........................لا تفزعن فإن الصانع الله.
إذا بليت فثق بالله وارض به...................فإن الذي يكشف البلوى هو الله.
و الله ما لك غير الله من أحد.......................فحسبك الله في كل لك الله
أخوكم مراد
فيك بارك الله اخي (مراد)
..................بسم الله الرحمن الرحيم..................
وتعاونوا على البر والتقوى ولا تعاونوا على الإثم والعدوان
.............................................................................................................................
سلسلة تعلم برمجة Pascal , تعلم اساسيات الباسكال
التحكم بمنفذ الطابعة عن طريق الدلفي
سلسلة دروس تعلم قواعد بيانات Midas
أفكار سريعة, مجموعة شفرات صغيرة وفاعله لدلفي
كتب + مواقع ::: مراجع مهمة للغة دلفي, مجموعة كتب مجانية + مواقع مفيدة
مكتبه الأكواد, أكواد وبرامج دلفي
.............................................................................................................................

أضاعوني وأي فتى أضاعـوا * * * ليـوم كــريهـة وســـداد ثغــــر
وخـــــلونـي ومعتـرك المنايـا * * * وقد شـــرعوا أسنــتهم لنحـري
كأني لم أكــــــن فيهـم وسيطـا * * * ولم تك نســبتي في آل عمــرو
أجرر في الجـــوامع كـل يـوم * * * ألا لله مظــــلمتـي وهـصـــري
عسى الملك المجيب لمن دعاه * * * سينجيني فيعلم كيــف شكـري
فأجـــزي بالكرامـة أهـل ودي * * * وأجزي بالضـغينة أهل ضري
إذا بدك الصراحة أنا برمج سي ++
و برمج باسكال لكن لإني من زمان ما برمجت فيها فأنا غير قادر على فهم الكود
بالنسبة للفورم صار عم يتحرك عدي بشكل جميل جدا بطريقة برمجية بدون
إستخدام لإي تابع خارجي أو تابع api
تحريك الفورم سهل جدا بس بدك شويت انتباه :)
StartPoint ^ : TPoint ;
IsMoving : boolean ;
نضع هذه الأسطر في Private في داخل class
في ملف H .
تقريبا هيك الكتابة في باسكال
لكن هذا اللكود في السي بلدر
void __fastcall TForm1::TopPanelMouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
if ( Shift.Contains(ssLeft) )
{
StartPoint = new TPoint;
StartPoint->x = X;
StartPoint->y = Y;
IsMoving = true;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::TopPanelMouseMove(TObject *Sender,
TShiftState Shift, int X, int Y)
{
if ( IsMoving )
{
this->Top += Y - StartPoint->y;
this->Left += X - StartPoint->x;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::TopPanelMouseUp(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
IsMoving = false;
delete [] StartPoint;
}
//---------------------------------------------------------------------------عند النقر أخذ الإحداثيات و أضع المتحول المنطقي بـ 1
و عند التحريك أغير قيمة الأعلى و اليسار حسب القيم الجديدة
و عند التحرير أحذف المتحول و أضع المتحول المنطقي بـ 0
هذا الموضوع مغلق.