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

تحريك الفورم

مغلق
بدأه Desigen في 6 مارس 2005 · 18 رد · 1,876 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

يعطيكم العافية

عندي سؤال

عندي فورم الحدود تبعه bsnone

و يوجد بداخله Panel

كيف يمكن لي الآن عندما أنقر على Panel و أحرك

أغير مكان الفور على الشاشة

شكرا لكم

#2

السلام عليكم

في حدث OnMouseDown الخاص بالبنل ضع الكود التالي :

ReleaseCapture;
SendMessage(Form1.Handle, WM_SYSCOMMAND, 61458, 0);
#3

و هذاكود آخر للعلم الكود لايسمح للبرنامج بتعدي حدود الشاشة

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;

#4

اما هذ فهو يحرك الفورم من اي مكان في الفورم

:lol:

____________.rar

تم تعديل هذه المشاركة بواسطة سيف الدين 2 في 7 مارس 2005 في 14:21

..................بسم الله الرحمن الرحيم..................

وتعاونوا على البر والتقوى ولا تعاونوا على الإثم والعدوان

.............................................................................................................................

لنبدا دورة دلفي

سلسلة تعلم برمجة Pascal , تعلم اساسيات الباسكال

التحكم بمنفذ الطابعة عن طريق الدلفي

سلسلة دروس تعلم قواعد بيانات Midas

هيا لنبدأ بالApi

أفكار سريعة, مجموعة شفرات صغيرة وفاعله لدلفي

كتب + مواقع ::: مراجع مهمة للغة دلفي, مجموعة كتب مجانية + مواقع مفيدة

مكتبه الأكواد, أكواد وبرامج دلفي

.............................................................................................................................

18_07_05_10_53_18_1121752398da3wa_18.gif

#5

رائععععععععة ..

شكرا 02/11/2004

ملاحظة ,, وينك مشتقلك

#6

شكرا لكم جميعا

#7

اشتاقت لك العافية استاذي عروة ... اليومين هذي ... مشغول شوي ... : )

#8

للأسف ما قدرت أبدا أستفيد من أي تابع

أخي 02/11/2004 كيف ممكن أستخدم التابع وضعته في OnMouseMove لكن سلامتك

أخي سيف الدين شكرا جدا لك و فعلا هذا طلبي لكن أنا ما عرف استخرج التابع يلي استخدمه

أنا ببرمج بواسطة Borland C++ Buldier المبنية على الباسكال

شكرا لكم

#9

عرض مغري وجاري التجريب وجزاكم الله خيرا اخواني

السلام عليكم

#10

هل حل الأمر ولا لسه على العموم هناك كومبونيت موجود في مجموعة Flatstyle ممكن يساعدك دور عليه في www.torry.net

#11

يسلموا

حملت الكومبونتت و حابب جربه و ردلك خبر

شكرا كثير

#12

ولا كود اشتغل معي

#13

انا لست خبيرا في Borland C Builder . ولكن حتما المشكلة أننا يجب أن نغيير بعض العبارات لتتوافق مع C++ Builder ,

Borland C Builder ليست عندي حاليا , على كل حال . جرب أن تبحث في الهلب على الكلمتين :

ReleaseCapture

و WM_SYSCOMMAND

قد تجد امثله لهما

#14

يسلموا انحلت المشكلة برمجيا

#15

هذا مثال مكتوب بلغة سي ++ ل 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;
//---------------------------------------------------------------------------
#endif

B)

تم تعديل هذه المشاركة بواسطة ikossan في 13 مارس 2005 في 23:36

سأتغيب عن المنتدى وستكون لي زيارات خفيفة بين الحين و الحين

يا صاحب الهم إن الهم منفرج.....................أبشر بخير فإن الفارج الله.

اليأس يقطع أحيانا بصاحبه..........................لا تيأس فإن الكافي الله.

الله يحدث بعد العسر ميسرة.........................لا تفزعن فإن الصانع الله.

إذا بليت فثق بالله وارض به...................فإن الذي يكشف البلوى هو الله.

و الله ما لك غير الله من أحد.......................فحسبك الله في كل لك الله

أخوكم مراد

27_06_06_05_21_41_1151410901logo_adl_wal_ihsan.jpg

#16

فيك بارك الله اخي (مراد)

..................بسم الله الرحمن الرحيم..................

وتعاونوا على البر والتقوى ولا تعاونوا على الإثم والعدوان

.............................................................................................................................

لنبدا دورة دلفي

سلسلة تعلم برمجة Pascal , تعلم اساسيات الباسكال

التحكم بمنفذ الطابعة عن طريق الدلفي

سلسلة دروس تعلم قواعد بيانات Midas

هيا لنبدأ بالApi

أفكار سريعة, مجموعة شفرات صغيرة وفاعله لدلفي

كتب + مواقع ::: مراجع مهمة للغة دلفي, مجموعة كتب مجانية + مواقع مفيدة

مكتبه الأكواد, أكواد وبرامج دلفي

.............................................................................................................................

18_07_05_10_53_18_1121752398da3wa_18.gif

#17

اعتقد انني (طورت) فكرتك قليلا

لاحظ الفرق عند تحريك الفورم من البانيل

11.doc

أضاعوني وأي فتى أضاعـوا * * * ليـوم كــريهـة وســـداد ثغــــر

وخـــــلونـي ومعتـرك المنايـا * * * وقد شـــرعوا أسنــتهم لنحـري

كأني لم أكــــــن فيهـم وسيطـا * * * ولم تك نســبتي في آل عمــرو

أجرر في الجـــوامع كـل يـوم * * * ألا لله مظــــلمتـي وهـصـــري

عسى الملك المجيب لمن دعاه * * * سينجيني فيعلم كيــف شكـري

فأجـــزي بالكرامـة أهـل ودي * * * وأجزي بالضـغينة أهل ضري

منتديات الرياضيات العربية

#18

إذا بدك الصراحة أنا برمج سي ++

و برمج باسكال لكن لإني من زمان ما برمجت فيها فأنا غير قادر على فهم الكود

بالنسبة للفورم صار عم يتحرك عدي بشكل جميل جدا بطريقة برمجية بدون

إستخدام لإي تابع خارجي أو تابع api

#19

تحريك الفورم سهل جدا بس بدك شويت انتباه :)

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

هذا الموضوع مغلق.

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