اردو کنٹرول لائبریری

نبیل نے 'اردو ایڈیٹر پراجیکٹ' کی ذیل میں اس موضوع کا آغاز کیا، ‏جون 9, 2006

  1. نبیل

    نبیل محفلین

    مراسلے:
    16,748
    جھنڈا:
    Germany
    موڈ:
    Depressed
    میں اپنی ایک گزشتہ پوسٹ میں ڈاٹ نیٹ‌کے ایڈٹ کنٹرول سے ڈیرائیو کیے ہوئے ایک اردو ایڈٹ کنٹرول کی ضرورت کے بارے میں بات کر چکا ہوں۔ اب مجھے ایسا ایک کسٹم اردو ایڈٹ کنٹرول بنانے میں جزوی کامیابی حاصل ہوئی ہے۔ جزوی اس لیے کہ کرسر ابھی تک تماشے کر رہا ہے اور ابھی تک اس میں لینگویج سویچنگ بھی امپلیمنٹ نہیں ہوئی ہوئی۔ بہرحال اسی implementation کو بنیاد بنا کر اردو کنٹرولز کی ایک لائبریری بنائی جا سکتی ہے جس کے ذریعے اردو اپلیکیشنز بنانا آسان ہو جائے گا۔

    ذیل میں اردو ایڈٹ کنٹرول کا کوڈ پوسٹ کر رہا ہوں۔ اس کے علاوہ میں سی شارپ کا ایک پراجیکٹ بھی پوسٹ کر رہا ہوں جس میں یہ کنٹرول استعمال کیا گیا ہے۔ بعد میں اس پر مزید پوسٹ کروں گا۔

    کوڈ:
    using System;
    using System.Drawing;
    using System.Collections;
    using System.ComponentModel;
    using System.Windows.Forms;
    
    
    namespace UrduCtrl
    {
    	/// <summary>
    	/// Summary description for Class1.
    	/// </summary>
    	[System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand, Name="FullTrust")]
    	public class UrduTextBox: System.Windows.Forms.TextBox
    	{
    		private int WM_CHAR = 0x102;
    		private int WM_KEYDOWN = 0x100;
    		private Hashtable CharMap;
    		private bool m_bIsUrdu;
    
    		public UrduTextBox()
    		{
    			//
    			// TODO: Add constructor logic here
    			//
    
    			this.Font = new System.Drawing.Font("Urdu Naskh Asiatype", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((System.Byte)(178)));
    		//	this.RightToLeft = System.Windows.Forms.RightToLeft.Yes;
    			this.TextAlign = System.Windows.Forms.HorizontalAlignment.Right;
    			this.m_bIsUrdu= true;
    
    			CharMap= new Hashtable();
    
    			CharMap['a']=0x627; 
    			CharMap['b']=0x0628;
    			CharMap['c']=0x0686;
    			CharMap['d']=0x062F;
    			CharMap['e']=0x0639;
    			CharMap['f']=0x0641;
    			CharMap['g']=0x06AF;
    			CharMap['h']=0x06BE;
    			CharMap['i']=0x06CC;
    			CharMap['j']=0x062C;
    			CharMap['k']=0x06A9;
    			CharMap['l']=0x0644;
    			CharMap['m']=0x0645;
    			CharMap['n']=0x0646;
    			CharMap['o']=0x06C1;
    			CharMap['p']=0x067E;
    			CharMap['q']=0x0642;
    			CharMap['r']=0x0631;
    			CharMap['s']=0x0633;
    			CharMap['t']=0x062A;
    			CharMap['u']=0x0626; 
    			CharMap['v']=0x0637;
    			CharMap['w']=0x0648;
    			CharMap['x']=0x0634;
    			CharMap['y']=0x06D2;
    			CharMap['z']=0x0632;
    	
    			CharMap['A']=0x0622;
    			CharMap['B']=0x0628;
    			CharMap['C']=0x062B;
    			CharMap['D']=0x0688;
    			CharMap['E']=0x0651; 
    			CharMap['F']=0x064D; 
    			CharMap['G']=0x063A;
    			CharMap['H']=0x062D;
    			CharMap['I']=0x0670; 
    			CharMap['J']=0x0636;
    			CharMap['K']=0x062E;
    			CharMap['L']=0x0628;
    			CharMap['M']=0x064B; 
    			CharMap['N']=0x06BA;
    			CharMap['O']=0x0628;
    			CharMap['P']=0x064F; 
    			CharMap['Q']=0x0628;
    			CharMap['R']=0x0691;
    			CharMap['S']=0x0635;
    			CharMap['T']=0x0679;
    			CharMap['U']=0x0621;
    			CharMap['V']=0x0638;
    			CharMap['W']=0x0624;
    			CharMap['X']=0x0698;
    			CharMap['Z']=0x0630;
    	
    			CharMap['>']=0x0650; 
    			CharMap['<']=0x064E; 
    
    			CharMap[Convert.ToChar(58)]=0x061B;
    			CharMap[Convert.ToChar(59)]=0x061B;
    			CharMap[Convert.ToChar(39)]=0x2018;
    			CharMap[Convert.ToChar(34)]=0x201C;
    			CharMap[Convert.ToChar(46)]=0x06D4;
    			CharMap[Convert.ToChar(44)]=0x060C;
    			CharMap[Convert.ToChar(33)]=0x0021;
    	
    			CharMap[Convert.ToChar(43)]=0x002B;
    			CharMap[Convert.ToChar(45)]=0x002D;
    			CharMap[Convert.ToChar(42)]=0x00D7;
    			CharMap[Convert.ToChar(47)]=0x00F7;
    			CharMap[Convert.ToChar(37)]=0x066A;
    			CharMap[Convert.ToChar(41)]=0x0028;
    			CharMap[Convert.ToChar(40)]=0x0029;
    			CharMap[Convert.ToChar(61)]=0x003D;
    			//CharMap[Convert.ToChar(32)]=32;
    			CharMap['?']=0x061F;
    		}
    
    		protected override void WndProc(ref Message m)
    		{
    			if (m.Msg == WM_CHAR)
    			{
    				if(m_bIsUrdu)
    				{
    					char strChar= (char) m.WParam;
    					if(CharMap.ContainsKey(strChar))
    					{
    						int iChar= (int) CharMap[strChar];
    						m.WParam= (IntPtr) iChar;
    					}
    				}			
    			}
    			if (m.Msg == WM_KEYDOWN)
    			{				
    				if (m.WParam== (IntPtr) 32)
    				{
    					if((Control.ModifierKeys & Keys.Control) == Keys.Control )
    					{
    						this.m_bIsUrdu= !(this.m_bIsUrdu);
    					}
    				}
    			}
    			base.WndProc(ref m);
    		}
    	}
    }
     

    منسلک فائلیں:

    • پسندیدہ پسندیدہ × 1
  2. دوست

    دوست محفلین

    مراسلے:
    13,072
    جھنڈا:
    Germany
    موڈ:
    Fine
    یہ ڈاٹ نیٹ میں‌ جو آپ بنا رہے ہیں کیا لینکس پر چلے گا؟؟؟؟
     
  3. الف نظامی

    الف نظامی لائبریرین

    مراسلے:
    16,147
    جھنڈا:
    Pakistan
    موڈ:
    Amused
  4. الف نظامی

    الف نظامی لائبریرین

    مراسلے:
    16,147
    جھنڈا:
    Pakistan
    موڈ:
    Amused
    نبیل ٹیکسٹ باکس کی ٹیکسٹ ڈائریکشن کی پراپرٹی رائٹ ٹو لیفٹ سیٹ کریں ، میرا خیال ہے کہ کرسر کا معاملہ حل ہوجائے گا۔
     
  5. نبیل

    نبیل محفلین

    مراسلے:
    16,748
    جھنڈا:
    Germany
    موڈ:
    Depressed
    راجہ، تم کمپائل کرکے دیکھو تمہاری طرف کیسا چلتا ہے پروگرام؟ میں بتا چکا ہوں کہ گھر والے پی سی پر Visual Studio.NET 2002 میں کمپائل کرنے پر کرسر کا معاملہ ٹھیک رہتا ہے جبکہ آفس میں Visual Studio.NET 2003 میں کمپائل کرنے پر کرسر عجیب و غریب حرکتیں کرتا ہے۔ پتا نہیں Visual Studi.NET 2005 اور .NET 2.0 پر یہ کیسا چلے گا؟
     
  6. الف نظامی

    الف نظامی لائبریرین

    مراسلے:
    16,147
    جھنڈا:
    Pakistan
    موڈ:
    Amused
    یہاں بھی کرسر کا معاملہ خراب ہی ہے۔
     
  7. الف نظامی

    الف نظامی لائبریرین

    مراسلے:
    16,147
    جھنڈا:
    Pakistan
    موڈ:
    Amused
    [align=left:fdd5aeba01]this.urduTextBox.RightToLeft = System.Windows.Forms.RightToLeft.Yes;[/align:fdd5aeba01]
    سے مسلہ حل ہوجاتا ہے۔
     
  8. ابو کاشان

    ابو کاشان محفلین

    مراسلے:
    1,838
    جھنڈا:
    Pakistan
    موڈ:
    Brooding
    یہ کیا ہے، اس سے عوام النّاس کو کیا فائدہ ہے۔:)
     
    • پسندیدہ پسندیدہ × 1
  9. دوست

    دوست محفلین

    مراسلے:
    13,072
    جھنڈا:
    Germany
    موڈ:
    Fine
    اس سے عوام الناس جو سی شارپ جانتے ہیں اور پروگرامر کہلاتے ہیں ایسے پروگرام بنا سکتے ہیں۔ جن میں‌اردو لکھی جاسکے۔
     
    • پسندیدہ پسندیدہ × 4
  10. فرخ

    فرخ محفلین

    مراسلے:
    1,722
    جھنڈا:
    Pakistan
    موڈ:
    Aggressive
    نبیل بھائی
    یہ کام اردو کا علیحدہ کنٹرول بنائے بغیر بھی تو کیا جاسکتا ہے۔
    اگر آپ RichTextBox کنٹرول کا استعمال کریں تو آپ کو اتنا کچھ نہیں کرنا پڑے گا۔
    میں نے ابھی C# 2008 Express میں اسے Try کیا تھا، اچھا خاصا آسان کام ہے۔ صرف اردو ونڈوز میں ہونی چاھئیے۔۔۔
     
    • پسندیدہ پسندیدہ × 1
  11. نبیل

    نبیل محفلین

    مراسلے:
    16,748
    جھنڈا:
    Germany
    موڈ:
    Depressed
    فرخ، ان کنٹرولز کو استعمال کرنے کے لیے ونڈوز میں اردو سپورٹ انسٹال ہونی ضروری ہے لیکن ان میں اردو ٹائپ کرنے کے لیے اردو کی بورڈ انسٹال کرنا ضروری نہیں ہے۔
     
    • پسندیدہ پسندیدہ × 2
  12. فرخ

    فرخ محفلین

    مراسلے:
    1,722
    جھنڈا:
    Pakistan
    موڈ:
    Aggressive
    جی میں‌سمجھ گیا تھا آپ کے کوڈ میں characters definitions دیکھ کر۔ مگرجہاں‌ونڈوز میں اردو انسٹال ہوتی ہے، وہاں کی بورڈ بھی ڈالا جاسکتا ہے۔ اور جب آپ اپنا یہ پروگرام انسٹالر کے ذریعے لوگوں‌کو دیں گے، تو اردو سپورٹ اور کی بورڈ بھی دے سکتے ہیں۔

    میری ذاتی رائے میں یہ اردو ایڈیٹر ویب کے لیئے بہت اچھا ہے، جیسا کہ ابھی محفل کا اردو ایڈیٹر بھی ہے۔ لیکن جب ہم پروگرام بنا کر انسٹالر کے ذریعے دیں تو کی بورڈ بھی ساتھ انسٹال کیا جاسکتاہے
     

اس صفحے کی تشہیر