четверг, 30 июня 2011 г.

Инструменты C# для разработки БД

Однажды в одной московской конторе мой собеседник задал мне вопрос: «В чём разница между СSS1 и CSS2?», - и я не смог на него ответить, на чём собеседование закончилось словами: «Ну, мы вам перезвоним». После этого собеседования во мне развилось что-то вроде комплекса неполноценности. И теперь, работая с Visual Studio, мне кажется, что я должен знать не только общие принципы решения той или иной задачи, но и знать наизусть все классы, методы, свойства, ключевые слова, операторы языка и директивы препроцессора C# - что весьма невозможно, до тех пор, пока мы не «урежимся». А урезаться, конкретно для меня, стоит в направлении разработки баз данных.

Что я использую при создании клиентской части своего приложения?

DataGridView
DataSet
DataTable
TableAdapter
DataSource
BindingSource
DataRow
DataRowView
CurrencyManager
OleDbCommandBuilder
OleDbDataAdapter

Wait…

Сегодняшние ссылки

http://smashingmagazine.artician.com/?pagenum=21 - какой-то интересный журнал
http://media.smashingmagazine.com/cdn_smash/wp-content/uploads/2010/05/CSS-Help-Sheet-large.jpg - какая-та интересная шпаргалка

вторник, 28 июня 2011 г.

Как увеличить высоту TextBox

Нужно в свойствах TextBox, в поле Multiline указать значение "True".

В коде это выглядит так:
TextBox1.Multiline = true;

А далее, указать нужный нам размер высоты.

Сегодняшние ссылки

Как сделать ячейку в DataGridView неактивной

datagridview1.Column[0].Visible = false;

где 0 - это порядковый номер колонки (0, 1, 2, 3...) 

понедельник, 27 июня 2011 г.

Программирование под Windows Phone 7

И тут, я такой, весь из себя Microsoft, говорю: "Ну и что, что Bada.. Мы ничем не хуже". И продолжаю творить обзор комуникаторов уже на базе Windows Phone 7. И вот что находим:

Телефоны на базе Windows Phone 7:
HTC 7 Surround - 3.8-дюймовый телефон со динамиком-слайдером (он же T8788)
HTC HD7- 4.3 дюймовый флагман (он же Schubert)
HTC 7 Trophy - 3.8-дюймовый телефон (он же Spark)
HTC 7 Mozart - 3.7-дюймовый телефон
Dell Venue Pro - 4.1-дюймовый портретный QWERTY-слайдер (он же Lightning)
Samsung Focus - 4-дюймовый безклавиатурный телефон с экраном Super AMOLED (он же Cetus)
Samsung Omnia 7 - 4--дюймовый безклавиатурный телефон с экраном Super AMOLED (он же i8700)
LG Optimus 7 - 3.8-дюймовый слайдер (он же E900)
LG Quantum - 3.5-дюймовый слайдер (он же C900)
HTC 7 Pro - 3.6-дюймовый QWERTY-слайдер для CDMA-оператора Sprint (2011 год)

Про Windows Phone 7:
Программируем Windows Phone 7–Silverlight
Детальный обзор Windows Phone 7
Windows Phone 7 : вопросы к Microsoft 
Книга: "Программируем Windows Phone 7"
Разработка под Windows Phone 7 для Android-разработчиков
программирование Windows Phone 7
Александр Климов про Windows Phone 7
WindowsPhoneClub
Программирование игр на XNA для Windows Phone 7
Материалы для программирования под Windows Phone 7
4PDA > Windows Phone 7
Информативный подкаст про WP7
ведущий разработчик программного обеспечения и Microsoft Student Partner Guru Юрий Трухин
Юрий Трухин, по жизни Гуру с надстройкой над MCP, просит заметить, что он не студент

Программирование под Bada

Мой друг работает в организации, где сотрудникам выдают крутейшие ноуты и крутейшие наладонники. Я не очень обрадовался этому, потому что в той организации, где работаю я, даже кондиционера в кабинет не добьёшься, и даже куллера. И как-то раз, сидя у друга в машине, я подержал его, что-то похожее на HTC Incredible S black. Ну, и учитывая то, что у меня до сих пор Samsung c130, я начал ощущать себя ущербным и обделённым - эту проблему надо было срочно решить и я пошёл в магазин, смотреть что-нибудь сенсорное, наладонное и помещающееся в руке. И мне по внешнему дизайну понравился Samsung Wave II (S8530). Порывшись в рунете, я узнал о существовании операционной системы Bada. А можно ли что писать под эту ОС?, - задался я вопросом. И оказывается можно. Вот, что я нашёл:

http://www.samsungbada.ru/forum/ - программирование на Bada;
http://www.bada.com/ - официальный сайт Bada;
http://developer.bada.com/apis/index.do - сайт разработчиков;
http://badablog.ru/ - всё о Bada в одном блоге;
http://habrahabr.ru/blogs/mobiledev/112334/ - картографические возможности Bada;
http://www.realcoding.net/ - о Bada всего одна запись, и то, никакая. Но зато много чего о другом!

Активность элемента

Главная страница MSDN

Интересная работа

http://habrahabr.ru/job/5163/
Знал бы я ещё всё это.. :) 

Задачка

Архив программиста

http://www.archival.ru/node/251

четверг, 23 июня 2011 г.

Google Analytics

среда, 22 июня 2011 г.

Связанный ComboBox

В Visual Studio 2010 существует стандартный элемент управления – ComboBox, задача которого является отображение редактируемого текстового поля и раскрывающегося списка допустимых значений. По своей неопытности настроить связанный с БД ComboBox, который помимо связанного списка показывал бы ещё и текущее состояние строки из таблицы в поле которой указан код, по которому она связана с дочерней таблицей и где дочерняя таблица и есть список выпадающих items'ов Combobox, у меня не получалось. Но я знал, как на определённый столбец отображаемой таблицы в DataGridView повесить Combobox. Время решения задачи поджимало, и я решил сделать связанный Combobox на основе DataGridView, убрав при этом отображение всех ненужных мне полей – и это весьма ламерское решение, как выяснилось позже.

В «DataGridView Задачи» выбираем «Правка столбцов», где выбираем столбец и в свойствах привязанного столбца в ColumnType указываем: «DataGridViewComboBoxColumn». Затем определяем DataSource, DisplayMemer и ValueMember. Где в DataSource указывается таблица, связанная (или не связанная, но обязательно с содержанием всех ключей основной таблицы) таблица. В DisplayMember мы указываем строку, определяющую свойство или столбец, из которого извлекаются строки для отображения в полях со списком, или проще говоря, то, что должно отображаться в выпадающем списке (и для того, чтобы пользователь работал не с кодом мастера Васильева В. С., а именно с его Ф.И.О.), а в ValueMember мы выбираем поле, в котором указан код Васильева В.С. (это значение будет записываться в БД в основную таблицу при изменении данных). Далее, всем ненужным нам полям выставляем False в Visible (очень нудно, когда столбцов очень много, у меня их было 24 и это надо было сделать на 8 Combobox), тем самым убрав всё лишнее отображаемое. Затем переходим в свойства dataGridView, где убираем отображение строки заголовков столбцов, убираем отображение столбца, содержащего заголовки строк, а типу полосы прокрутки(ScrollBars) присваиваем значение «None». Затем нужно поиграть со цветом dataGridView, где синий фон выделенной строки поменять на белый, а цвет текста поменять на чёрный. И, вот, у нас получился связанный ComboBox, который умеет не только выбрасывать список, но и отображать текущее состояние строки. И всё бы хорошо, если бы пользователь (или занудный тестер, который сидит внутри меня), не умудрился нажать клавишу «вверх» или «вниз». Ведь, так как фактически, ComdoBox содержится внутри DataGridView, и фактически там отображается не одна строка, а все строки нашего BindingSource (если я не путаюсь в терминологии, если точнее, то метод Fill, GetData() нашего TableAdapter). То при нажатии «вниз» мы перемещаемся на следующую строку того самого BindingSource таблицы указанной в DataGridView, вместо того, чтобы перемещаться вниз по items’ам нашего ComboBox. Чтобы запретить пользователю делать это, нам нужно создать отдельный метод, который будет выбирать по SQL-запросу текущую строку – а это вычисление ключа текущей строки главного DataGridView, и передача его в SQL запрос DataGridView в которой содержится наш ComboBox – весьма нудное занятие. Проще вернуться к нормальному ComboBox и изучить его более подробно, чем при первом знакомстве. Хотя, данное решение может пригодиться для создания выпадающего списка с содержанием нескольких столбцов. Или для ComboBox, внутри которого есть ещё один ComboBox.

С нормальным ComboBox дела идут куда проще в контексте поставленной мне задачи. В свойствах ComboBox определяем DataSource, DisplayMember и ValueMember. В DataSource указываем то, что у нас должно отображаться в выпадающем списке ComboBox. В DisplayMember и ValueMember указываем отображаемые и вносимые данные соответственно. В задачах СomboBox определяем «выбранное значение», где указываем столбец родительской таблицы, в который мы вносим изменения. На этом создание ComboBox заканчивается. Не нужно определение новых TableAdapter, новых BindingSource и новых методов чтения/обновления БД.

пятница, 17 июня 2011 г.

Примеры интерфейсов (графическое представление, исходный код, элементы)

Анимация "Система шлюзов"

Очень понравилось. Можно часами сидеть перед монитором, подсчитывая количество прошедших через шлюзы кораблей.
http://www.oc3.ru/portfolio/demoobjects/files/oc3_shluz/oc3_shluz.swf

Книги по юзабилити, дизайну, психологии и проектированию ПО

Корзина полезных ссылок

Ссылочки разберу позже. Выкладываю, чтобы не забыть, что они есть.

http://msdn.microsoft.com/ru-ru/library/system.data.datatable.load.aspx
http://krez0n.org.ua/archives/84
http://net-linq.blogspot.com/2010/09/3-datagridview.html
http://www.sql.ru/forum/actualthread.aspx?tid=414328&hl=c
http://forum.codenet.ru/archive/index.php/t-29267.html
http://kbss.ru/blog/168.html
http://forum.sources.ru/index.php?showtopic=291836
http://social.msdn.microsoft.com/Forums/en-US/winformsdatacontrols/thread/413c3fc7-948b-4596-9283-48b867e20b2b
http://www.velocityreviews.com/forums/t98786-q-query-of-dataadapter.html
http://msdn.microsoft.com/ru-ru/library/system.windows.forms.bindingsource.currentchanged.aspx
http://www.cyberforum.ru/ado-net/thread168736.html
http://www.gotdotnet.ru/forums/14/132141/
http://forums.realcoding.net/index.php?showtopic=15680
http://datagridview.narod.ru/index9.html
http://ru.w3support.net/index.php?db=so&id=520051
http://www.cyberforum.ru/ado-net/thread219051.html
http://wincontrol.rapidscada.ru/articles/datagridview.htm
http://www.gotdotnet.ru/forums/14/102753/486958/
http://www.intuit.ru/department/school/cs4kids/6/3.html
http://forums.realcoding.net/index.php?showtopic=17951
http://simple-cs.ru/store/Win/3/
http://kbss.ru/blog/168.html
http://forum.vingrad.ru/forum/topic-198827.html
http://msdn.microsoft.com/ru-ru/library/system.data.datarow(v=VS.90).aspx
http://www.cyberforum.ru/ado-net/thread54419.html
http://www.skillcoding.com/Default.aspx?id=147
http://www.cyberforum.ru/csharp-beginners/thread169064.html
http://www.ishodniki.ru/art/artshow.php?id=565
http://www.ishodniki.ru/art/art_progr/net/550.html
http://www.cats-cry.info/c-sharp/
http://www.cats-cry.info/ispol_zovanije_sopostavlenija_tablemapping_.html
http://www.cats-cry.info/para_slov_o_strokah.html
http://www.cats-cry.info/sozdanije_okon_nestandartnoj_formy_v_c_.html
http://www.cats-cry.info/poluchit_tekushhuju_stroku_v_bd_datagridview_.html
http://www.intuit.ru/department/internet/aspnetvsnet/10/4.html
http://www.intuit.ru/department/internet/aspnetvsnet/10/5.html
http://www.gotdotnet.ru/forums/2/42416/
http://forum.codenet.ru/threads/57706-DataGridView-BindingSource-List
http://msdn.microsoft.com/ru-ru/library/ms158145.aspx
http://msdn.microsoft.com/ru-ru/library/y0h25we8.aspx
http://msdn.microsoft.com/ru-ru/library/k26k86tb.aspx
http://msdn.microsoft.com/ru-ru/library/system.windows.forms.bindingsource.aspx
http://www.cats-cry.info/poluchit_tekushhuju_stroku_v_bd_datagridview_.html
http://msdn.microsoft.com/ru-ru/library/ms158145.aspx
http://forum.pocketz.ru/lofiversion/index.php?t35929.html
http://lifeasflash.blogspot.com/2009/02/datagridview-bindingsource-position.html
http://www.cyberforum.ru/csharp-net/thread111827.html
http://www.codeproject.com/KB/grid/FromDataGrid2DataSet.aspx
http://nullpro.info/2011/kak-udalit-tekushhuyu-stroku-vse-stroki-iz-datagridviewdatatable-v-c-net/
http://www.sql.ru/forum/actualthread.aspx?tid=493710
http://www.sql.ru/forum/actualthread.aspx?tid=154682
http://www.gotdotnet.ru/forums/3/128674/
http://www.sql.ru/forum/actualthread.aspx?tid=311526
http://www.ityourself.ru/bazi-dannich/vvedenie-v-kurs-bazi-dannich/29.html
http://msdn.microsoft.com/ru-ru/library/t4a23xx4.aspx
http://msdn.microsoft.com/ru-ru/library/system.windows.forms.datagridview.setcurrentcelladdresscore.aspx
http://www.cyberforum.ru/archive/t-84356.html
http://html-css-js.org.ua/operation-is-not-valid-because-it-results-in-a-reentrant-call-to-the-setcurrentcelladdresscore-function-212.htm
http://bytes.com/topic/net/answers/417025-gridview-exception-reentrant-call-setcurrentcelladdresscore-function
http://connect.microsoft.com/VisualStudio/feedback/details/390918/datagridview-control-throws-invalidoperationexception-reentrant-call-to-setcurrentcelladdresscore
http://ru.w3support.net/index.php?db=so&id=893752


Как скрыть вкладку TabControl?

Надо почитать msdn. И вот что там написано:
Вкладки в элементе управления TabControl являются частью TabControl, но не частями отдельных элементов управления TabPage. Члены класса TabPage, например свойство ForeColor, влияют только на клиентский прямоугольник страницы вкладки, но не на вкладки. Кроме того, метод Hide объекта TabPage не будет скрывать вкладку. Чтобы скрыть вкладку, необходимо удалить элемент управления TabPage из коллекции TabControl.TabPages. http://msdn.microsoft.com 
Делается это так:

tabControl1.TabPages.Remove(tabControl1.TabPages[1]);

Когда понадобится, восстановить обратно.

Но если уж очень хочется изменить свойство видимости парой кликов мыши, то можно воспользоваться XtraTabControl от DevExpress.

Несколько ссылок по TabControl.TabPages:
http://simple-cs.ru/store/Web/11/
http://www.dotsite.ru/Publications/Publication156.aspx
http://teachpro.ru/Уроки...
http://netsources.narod.ru/cf/tabcontrol.html

Книжные новинки, блог Виктора Штонда

Нашёл интересный блог. В блоге обсуждаются новые книги, даётся краткий обзор и ссылки, где их можно приобрести. Книга - это всегда хорошо: можно полистать, сделать пометки маркером, взять с собой, и наконец, собрать целый шкаф вкусных книг и показать это всё какой-нибудь девахе, которая придёт к тебе, когда у тебя дома будет чистенько. А цифра - она у всех есть, девах гигами не удивишь..

http://shtonda.blogspot.com/ - интересный блог. Пешочком рекомендует!