رد شدن به محتوای اصلی

gozir

gozir


نوار لغزان با لغزندگی پایین

Posted: 11 Dec 2009 12:52 AM PST

یکی از ایرادهای گزارش شده برای ویرایشهای قدیمی‌تر گنجور رومیزی این بود که نوارهای لغزان آن با کمک کلیدهای جهتی نمی‌لغزد. در واقع اگر ویرایش ۱.۶۳ و پایین‌تر آن را آزمایش بکنید می‌بینید که مثلاً نوار لغزان عمودی آن را، اگر کلید جهتی پایین را همینطور فشار دهید، بعد از سه چهار ثانیه بالاخره تسلیم می‌شود و راه می‌افتد اما خوب! سخت راه می‌افتد (دلیلش از لحاظ برنامه‌نویسی احتمالاً این است که کلید جهتی مزبور در واقع فوکوس را دارد بین کنترلها جابجا می‌کند و به هر کدام چند میلی ثانیه اجازهٔ مالکیت آن را می‌دهد تا آخر سر نوبت به نوار لغزان می‌رسد). توی ویرایش جدیدتر این مشکل را حل کردم.

اما «چطورش» شاید به درد برنامه‌نویسهای (احتمالاً تازه‌کار یا کم‌سواد مثل خودم) ویندوز فرمز بخورد (چون راه حلش را با جستجو پیدا نکردم): کنترل اصلی گنجور رومیزی یک User Control ساده است که نشانی شعرها یا دسته‌های شعرها و همینطور شماره بیتها با استفاده از کنترلهای LinkLabel و مصرعها با استفاده از یک کنترل مشتق از Label روی آن تعبیه شده و ویژگی AutoScroll آن فعال است. به این ترتیب، با توجه به جای پایین‌ترین و سمت چپ‌ترین کنترل، نوارهای لغزندهٔ آن به طور خودکار ظاهر می‌شوند. من برای این که بتوانم کلیدهای جهتی را برای حرکت دادن نوارهای لغزان دریافت کنم رویداد PreviewKeyDown را برای این کنترل به صورت زیر نوشتم:

[code lang="c#"] private void GanjoorViewer_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e) { bool isInputKey = true; switch (e.KeyCode) { case Keys.Down: if (VerticalScroll.Value + VerticalScroll.SmallChange <= VerticalScroll.Maximum) VerticalScroll.Value += VerticalScroll.SmallChange; break; case Keys.Up: if (VerticalScroll.Value - VerticalScroll.SmallChange >= VerticalScroll.Minimum) VerticalScroll.Value -= VerticalScroll.SmallChange; break; case Keys.PageDown: for(int i=0; i<2; i++)//!? if (VerticalScroll.Value + VerticalScroll.LargeChange <= VerticalScroll.Maximum) VerticalScroll.Value += VerticalScroll.LargeChange; else VerticalScroll.Value = VerticalScroll.Maximum; break; case Keys.PageUp: for (int i = 0; i < 2; i++)//!? if (VerticalScroll.Value - VerticalScroll.LargeChange >= VerticalScroll.Minimum) VerticalScroll.Value -= VerticalScroll.LargeChange; else VerticalScroll.Value = VerticalScroll.Minimum; break; case Keys.Right: if (HorizontalScroll.Value + HorizontalScroll.SmallChange <= HorizontalScroll.Maximum) HorizontalScroll.Value += HorizontalScroll.SmallChange; break; case Keys.Left: if (HorizontalScroll.Value - HorizontalScroll.SmallChange >= HorizontalScroll.Minimum) HorizontalScroll.Value -= HorizontalScroll.SmallChange; break; default: isInputKey = false; break; } if (isInputKey) e.IsInputKey = true; } [/code]

در مورد حلقهٔ دوتایی کلیدهای PageDown و PageUp، دلیلش را نمی‌دانم ولی بدون اصرار ;) کار نمی‌کرد! بعد این رویداد را علاوه بر UserControl اصلی، همه جا، پس از ایجاد و اضافه کردن زیرکنترلهایش به آنها هم نسبت دادم:

[code lang="c#"] private void AssignPreviewKeyDownEventToControls() { foreach (Control ctl in this.Controls) ctl.PreviewKeyDown += GanjoorViewer_PreviewKeyDown; } [/code]

در هر صورت، راه حل، کمی عجیب و غریب است ولی کار می‌کند. اگر دوستان راه‌حل بهتری سراغ دارند پیشنهاد دهند. کد گنجور رومیزی نیز در دسترس و قابل دریافت است (این صفحه را ببینید). فهرست تغییرات گنجور رومیزی را در این صفحه می‌توانید ببینید.

نظرات

پست‌های معروف از این وبلاگ

بن و ریشه هستی مانند گردونه ای دوار است

ارد بزرگ می گوید : بن و ریشه هستی مانند گردونه ای دوار است که همه چیز را گرد رسم کرده است برسان : گردش روزها ، چرخش اختران و ستارگان ، چرخش آب بر روی زمین ، زایش و مرگ ، نیکی و بدی ، گردش خون در بدن ، حرکت اتم و … یکی از تفاوتهای بنیادین اندیشه ی ایرانی و سامی، نگرش گردونه ای آریاییان به هستی و پدیده هایش است. جهان اندیشه ی ایرانی، "پس از مرگ" نیز دارد چرا که آنها هرگز به "آخر خط" نمیرسند، هر پایانی برای ایشان سرآغازی دیگر است، زیرا مرگ را پسرفتی اهریمنانه میدانند. به وارون، در اندیشه ی سامیان، هستی و به ویژه زمان ساختاری راسته ای [خطی] دارد. سامیان بر این باورند که جهان روزی آغازیده است و روزی میمیرد، آنها زمان را دارای آغاز و پایان میدانند. در حالی که هندیان آریایی به تناسخ [گردش همیشگی روانها در تن] باور دارند. ایرانیان زروانگرا نیز، زمان را به چهار دوره سه هزار ساله بخش میکردند دوره نخست که آفرینش، مینوی است. دوره دوم یا بندهشن که اورمزد هستی را می آفریند، بی آنکه اهریمن را بدان راهی باشد. دوره سوم یا گمیچشن که اهریمن هستی را با بدی می آلاید و در پایان، سه هز...

Alef dot ir

Alef dot ir دانشگاه بستنی‌سازی تاسيس شد زوج مسن به فاصله یک روز از هم درگذشتند كاركنان كنسولگری فرانسه اعتصاب كردند کواکبیان: هولوکاست جزء منافع ملی نیست مجيدي: داوري حق ما را خورد عنايت: به مظفري‌زاده نمره قبولي مي‌دهم سعید زيباكلام ميهمان امشب "ديروز امروز فردا" مذاکره برای آزادی شالیط متوقف شد اژه‌ای: انقلاب ما صرفا اخلاقی نبود خاطرات عزت‌‌شاهی از مقام معظم رهبری فردا آخرین مهلت ثبت‌نام در کنکور کارشناسی‌ارشد 5 روش برای شناخت دقیق انقلاب مردی همسر مطلقه‌اش را با 19موش ترساند سرپرست دانشگاه محقق اردبیلی منصوب شد رامين: درحفظ كليدواژه‌هاي امام(ره) ضعف داريم طلسم تساوی‌های دربی شکست پایان مهلت یونسکو برای تعدیل جهان‌نما اقدام دانشگاه آزاد برای گرفتن امضا از نمایندگان علت مرگ پزشک کهریزک مشخص شد مجهز شدن کلیساها به سیستم حضور و غیاب مبتلايان به آلزايمر نرگس بو کنند عکس/ دست نوازش یوزپلنگ بر سر بچه آهو علت ترافیک در تونل توحید اظهارات خصمانه...

نگاهی آماری به کارآفرین های زن

وضعیت زنان و دختران کارافرین دانشگاهی در ایران و جهان در تحقیق دیگری، اهداف و انگیزه های خانمها عبارت بود از: شناخت فرصت و به دست آوردن پول و لذت بردن از کار. با توجه به نتایجی که از تحقیق «توسعه کارافرینی زنان و دختران دانشگاهی» به دست آمده است، می توان گفت که زنان کارافرین بیشتر در محدوده سنی ۳۰ تا ۵۰ سال قرار دارند (که بسته به ملیت، این سن متغیر است). در «فلسطین اشغالی»، میانگین سنی خانمها ۵۲ سال است، در حالی که میانگین سنی مورد مشاهده در «اروپا» و «امریکا» ۴۰ سال است و میانگین سنی زنان کارافرین شرکت کننده در تحقیق انجام شده در ایران ۳۴ سال است. متغیر سنی افراد شرکت کننده در این تحقیق ۱۹ تا 54 سال است (که از این میان 76% از آنها متأهل اند). 9/21% آنها قبل از کارافرین شدن دانشجو، 5/31% کارمند تمام وقت در شرکتی دولتی، 8/24% کارمند تمام وقت در شرکتی خصوصی، 1/17% کارمند پاره وقت، 1% بیکار، 6/7% خانه دار، 4/13% کارفرما، بودند. مهمترین انگیزه ها و اهداف زنان کارافرین ایرانی - بترتیب اولویت – عبارت است از: رضایت شخصی ، اثبات شایستگی های خود، کمک به دیگران، داشتن قدرت و موقعیت اجتماعی برتر...