יום שישי, 17 בפברואר 2012

רקע תוכנה בצבעים משולבים - Gradient


כדי לצבוע את רקע החלונית (או הפקד-Control) בשני צבעים משולבים
יש ליצור אירוע Paint של הטופס או הפקד, ולהוסיף לתוכו את הקוד הבא.
אפשר לשחק עם המספרים של הצבעים:

עיקול הפינות של הטופס או של פקד אחר

נעשה ע"י:


// Curve corners:
[DllImport("Gdi32.dll", EntryPoint = "CreateRoundRectRgn")]
private static extern IntPtr CreateRoundRectRgn
(
    int nLeftRect,      // x-coordinate of upper-left corner
    int nTopRect,      // y-coordinate of upper-left corner
    int nRightRect,     // x-coordinate of lower-right corner
    int nBottomRect,  // y-coordinate of lower-right corner
    int nWidthEllipse,  // height of ellipse
    int nHeightEllipse  // width of ellipse
);

ולאחר מכן יש למקם את הקוד הבא בשיטה האתחול של הטופס (Load או בבנאי של הטופס):
public Form1() //constructor
{
  this.Region = System.Drawing.Region.FromHrgn(CreateRoundRectRgn(10, 10, Width, Height, 30, 30));
  btn.Region = System.Drawing.Region.FromHrgn(CreateRoundRectRgn(4, 4, btn.Width, btn.Height, c, c));
}

את הרעיון הזה מצאתי כאן:
http://stackoverflow.com/questions/5092216/c-form-with-custom-border-and-rounded-edges

גרירה של חלונית ע"י לחיצה (אחיזה) בכל מקום

#C
בכל מקום שעל הטופס או על כל פקד (Control) אחר, נעשה ע"י מיקום של השורות האלה בראש הטופס:
// Drag the Form
public const int WM_NCLBUTTONDOWN = 0xA1;
public const int HT_CAPTION = 0x2;
[DllImportAttribute("user32.dll")]
public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);
[DllImportAttribute("user32.dll")]
public static extern bool ReleaseCapture();

ולאחר מכן יש ליצור אירוע MouseDown עבור הטופס או עבור ה-Control איתו אנו עובדים, 
ולמקם את הקוד הבא בשיטה של האירוע:
private void Form1_MouseDown(object sender, MouseEventArgs e)
{
     if (e.Button == MouseButtons.Left)
     {
          ReleaseCapture();
          SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0);
     }
}



---
דרך אחרת לגרירה של טופס - הכוללת אפשרות לגרירה של הטופס עד לחל העליון של המסך כדי להגדיל אותו -

יום שבת, 11 בפברואר 2012

index


כתיבה / קריאה מהרגיסטרי של ווינדוס - כולל עקיפה של אבטחת UAC

הגדרת registery לריצה של תוכנית עם אתחול המערכת

טיפים ל-Windows (בעיקר Win7 אך לא רק)

בדיקה ומניעה של הרצת תוכנה ביותר מעותק אחד.

קריאת קוד של דפי אינטרנט - html

האזנה למקשים במהלך ריצת Windows

(ASP) שינוי מקור נתונים של טבלת GridView

(ASP) בניית דינמית של טבלה

קריאת פרמטרים משורת הפקודה

קריאה מתוך registery של Windows.7

קוד VBs - יצירת נקודת שיחזור לווינדוס בלחיצה

יצירת User Control ושימוש ב-delegate

(ASP) בנייה דינמית של טבלה:

(ASP) מיקום ושימוש ב-connectionString מתוך web.config

מניעת סגירת טופס בלחיצה על X

הסרת ניקוד מטקסט

הורדת קבצים ע"י VB script

ProcessDir - פונקציה רקורסיבית לסריקת תיקיות

Drag -n- Drop - 'זריקת' קבצים אל תיבת רשימה (listbox) או תיבת טקסט

קבע את האייקון של התוכנה

העלמת אייקונים משולחן העבודה - #C

יצירת תוכנית מייל - mail client

טיפים קטנים ושימושיים ב-#C

הגדרת אירוע 'יציאה' מטופס

מזעור תוכנית לשורת המשימות

כתיבה / קריאה מהרגיסטרי של ווינדוס - כולל עקיפה של אבטחת UAC

כתיבה / קריאה מהרגיסטרי של ווינדוס
נעשית ע"י שורות הקוד שיופיעו להלן.