Thursday, April 28, 2005

Печать информации на принтер в .NET устроена очень просто, но вместе с тем мне непонятно почему не предусмотрен автоматический перенос длинных строк? :(
Если выводить на печать строку превышающую по ширине, ширину области печати, то непоместившаяся часть строки просто отсекается. Мучался долго и упорно, искал в сети, народ тоже сталкивался с этой проблемой. Путем поисков, модификаций и добавлений своего, получился обработчик для события OnPrint:

int CharsCount, LinesCount=0;
int leftMargin = e.MarginBounds.Left;
int topMargin = e.MarginBounds.Top;
Rectangle rectDraw = new Rectangle(leftMargin, topMargin,e.MarginBounds.Width, e.MarginBounds.Height);
SizeF sizeF = new SizeF(e.MarginBounds.Width,e.MarginBounds.Height-printFont.GetHeight());
StringFormat sf = new StringFormat();
sf.Trimming = StringTrimming.Word;
e.Graphics.MeasureString(TextToPrint, printFont, sizeF,sf, out CharsCount, out LinesCount);
string stringForPage = TextToPrint.Substring(0, CharsCount);
e.Graphics.DrawString(stringForPage, printFont, Brushes.Black,rectDraw,sf);
if (CharsCount < texttoprint =" TextToPrint.Substring(CharsCount);" hasmorepages="true;" hasmorepages="false;">

Wednesday, April 27, 2005

Долго мучался с DataBinding'ом. Никак не мог понять, почему при заполнении контролов данными:
       oleDbDataAdapter1.Fill(dataSet,"Authors");
они заполняются, а при попытке записать изменненую инфорамцию из контрола в таблицу ничего не происходило:

if (e.KeyChar=='\u000D')
{
       oleDbDataAdapter1.Update(dataSet,"Authors");
       System.Windows.Forms.MessageBox.Show("Update successful");
}

В микрософтовском учебном курсе 70-316 ни слова по этому поводу :( Ларчик оказалось открывался просто, надо было указать для свойства BindingContext текущей формы что операция редактирования завершена:
       BindingContext[dataSet,"Authors"].EndCurrentEdit();
И лишь затем вызывать Update.

Вернулся в Москву

Вчера вернулся в Москву и вышел на работу. Дома было просто супер. Мое ясное солнышко было рядом, было так хорошо, сейчас хожу как будто кто-то ударил меня по голове пульным мешком. Все такое нереальное :( К тому что мы рядом так быстро привыкаешь, как только оказываешься на родной земле, вся разлука кажется дурным сном, как будто-бы ее не было, как будто это все было не с нами. А теперь... снова привыкать что ты далеко от меня, родная, очень друдно :(... Ничего, прорвемся, не в первой, как говориться что нам - кабанам :)
Зато это в последний раз, потом мы будем вместе на всегда. Мы уже муж и жена. Дома на полке лежит свидетельство о браке... через 3 месяца свадьба... так долго... но ничего, мы прорвемся!
Самое главное сейчас уйти с головой в работу, чтобы ни о чем другом не думать. Этим и начал заниматься...

Thursday, April 14, 2005

New version of DateTimeStamp released

Сегодня, добил все обнаруженные ошибки и баги в datetimestamp, и выпустил новый релиз. Релиз стабильный. Исходники прилагаются :)
http://datetimestamp.sourceforge.net
Завтра узежаю вечерним поездом на неделю домой. Вернусь, займусь вплотную PublicationsCataloguer'ом :)
Хех, уже не могу усидеть, побыстрее-бы завтра. Нагрузился материалами, в дороге буду готовиться к экзамену 70-316. Хех, только бы не просрать...

Thursday, April 07, 2005

В который раз убеждаюсь что значит незамыленный глаз

В настоящий момент я работаю в свободное время над двумя OpenSource проектами, работаю один, и зачастую не замечаю мелкие баги, которых как оказывается не мало :).
Сегодня приходил Мосалов Олег, пришел не надолго (за зарплатой), болеет человек. Поговорили, он сел тестировать один из проектов, нашел два бага :) Позор на мои седины, причем тестируя втупую - мышкой :) Инетересно что будет если прогрнать через NUnit. :)
Я пытался впарить ему программу за 5 рублей, но по завершении тестирования цена упала до 3х, минус рубль за каждый найденный баг :)
Я только сегодня думал выпускать первый релиз, придется подождать.
Зато другой проект имеет версию 1.4. и статус beta и хостится на http://www.sourceforge.net по адресу http://datetimestamp.sourceforge.net
Будем работать над ошибками... хотя куда там, на основной работе куча дел :(
Сегодня столкнулся с тем, что после создания базы данных средствами Microsoft Access (из C# кода) возникает ошибка при добавлении в нее таблиц. Вернее я думал что ошибка при добавлении, оказывается при открытии соединения с только что созданной базой данных:
OleDbConnection con = new OleDbConnection(connectionString);
OleDbCommand cmd = new OleDbCommand(commandString,con);
con.Open(); // Runtime Error;
cmd.ExecuteNonQuery();
con.Close();

Оказывается, Access просто не успевал закрыть свое подключение и самоустраниться. Пробелма решилась просто :)
System.Threading.Thread.Sleep(1000);
перед открытием соединения.

Wednesday, April 06, 2005

В прошедшее воскресенье гуляли по Москве. Погода была по-настоящему весенней, и грех было не выбраться на улицу в такой день. Вот и выбрался :) Маршрут был не очень протяженным. Пушкинская площпдь - Тверской Бульвар - Никитские ворота - Никитский бульвар - Арбат - Арбатские переулки - Новый Арбат - в метро и домой :)