for flooders
:: Главная :: Решения :: Статьи :: Сайт М. Дроздова :: Файловый архив :: Книга по VFP 9 :: Русский Help Online :: OFF-LINE Форум
   Лисоводы   всех   стран,  объединяйтесь !!!  

Список Форумов  :: Visual Foxpro, Foxpro for DOS
  

Можно ли сделать внешний вид Grid'а совсем плоским
rvc44
Автор

Сообщений: 2211
Откуда: Тамбов
Дата: 22.10.08 18:33:59
Может я чего не знаю?
Можно ли сделать внешний вид стандартного Grid'а СОВСЕМ плоским, например, при помощи GDI+?
ComponentOne True DBGrid и Microsoft Hierarchical Flex Grid позволяют это сделать!
Иначе, как ни крути, объемность Grid'у придает его заголовок.
Ratings: 0 negative/0 positive

Re: Можно ли сделать внешний вид Grid'а совсем плоским
h.i.a.

Сообщений: 4001
Откуда: Мурманск/Спб
Дата: 22.10.08 19:34:56
Стандартными средствами "площе" не получается.
[attachment 7074 grid.jpg]
Если не ищешь простых путей, можно нарисовать свой скроллбар и заголовок


------------------
Ratings: 0 negative/0 positive

Re: Можно ли сделать внешний вид Grid'а совсем плоским
ssa

Сообщений: 12712
Откуда: Москва
Дата: 22.10.08 19:40:13
Поставь в винде тему с плоскими гридами и любуйся полностью плоским гридом.


------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive

Re: Можно ли сделать внешний вид Grid'а совсем плоским
rvc44
Автор

Сообщений: 2211
Откуда: Тамбов
Дата: 22.10.08 20:07:53
Да нет, вполне пойдет! Просто сначала цвета подобрал неудачные, но посмотрел на твои
RGB(196,242,255) и RGB(255,254,195) и решил все оставить как есть!
Ratings: 0 negative/0 positive

Re: Можно ли сделать внешний вид Grid'а совсем плоским
rvc44
Автор

Сообщений: 2211
Откуда: Тамбов
Дата: 22.10.08 20:13:32
В итоге сделал так:
[attachment 7076 grid1.JPG]
Ratings: 0 negative/0 positive

Re: Можно ли сделать внешний вид Grid'а совсем плоским
Myhailo

Сообщений: 750
Дата: 22.10.08 20:31:13
Уважаемый rvc44
Как построить такую красивую форму, можно пример кода в студию или личку, код хороший ему ничего не будет
Спасибо.
Ratings: 0 negative/0 positive

Re: Можно ли сделать внешний вид Grid'а совсем плоским
h.i.a.

Сообщений: 4001
Откуда: Мурманск/Спб
Дата: 22.10.08 21:23:29
Имхо, папки в дереве лучше без линий показывать
[attachment 7077 grid2.jpg]


------------------
Ratings: 0 negative/0 positive

Re: Можно ли сделать внешний вид Grid'а совсем плоским
Рома

Сообщений: 1079
Дата: 23.10.08 06:11:31
Myhailo
Уважаемый rvc44 Как построить такую красивую форму, можно пример кода в студию или личку, код хороший ему ничего не будет
Спасибо.

Я так понимаю, ипользвалось www.codeplex.com
Ratings: 0 negative/0 positive

Re: Можно ли сделать внешний вид Grid'а совсем плоским
Crispy

Сообщений: 18559
Дата: 23.10.08 08:14:14
Myhailo
Уважаемый rvc44 Как построить такую красивую форму, можно пример кода в студию или личку, код хороший ему ничего не будет
Спасибо.
А в чем проблема-то? Все всегда элементарно делается руками. Можно же просто даже только по внешнему виду сделать какую угодно свою собственную форму - совершенно не зная кода, выводящего подобную форму у кого-то другого, если уж так она понравилась.


------------------
В действительности все иначе, чем на самом деле.
                                      (Антуан де Сент-Экзюпери)
Ratings: 0 negative/0 positive

Re: Можно ли сделать внешний вид Grid'а совсем плоским
rvc44
Автор

Сообщений: 2211
Откуда: Тамбов
Дата: 23.10.08 09:04:28
Да, использовались возможности упомянутой Sedna (VFPX). Зайдите по указанной выше ссылке, там есть всё необходимое. Файл Themes.xml придется таскать за своим проектом. Рулить атрибутами Grid header, в зависимости от установленной темы, можно и без этого, например, так:
  
  #Define WIN_XP	((OS(3) == '5') and (val( OS(4) ) > 0))  
    
 *-- Если программа запущена под Windows XP или выше  
  If (VAL(OS(3)) >= 6 ) OR (VAL(OS(3)) = 5 AND VAL(OS(4)) >= 1 )  
 	*-- Поддержка тем в Windows XP  
  	DECLARE LONG IsThemeActive IN uxTheme  
    
 	*-- Поддержка тем в Windows XP  
  	DECLARE LONG GetCurrentThemeName IN uxTheme ;  
  		STRING @ O_pwszThemeFileName, INTEGER nMaxNameChars, ;  
  		STRING @ O_pwszColorBuff, INTEGER nMaxColorChars, ;  
  		STRING @ O_pwszSizeBuff, INTEGER nMaxSizeChars  
    
  	If (IsThemeActive() == 1)  && WinAPI Function  
  		lw_ThemeFileName = Space( MAX_WCHAR )  
  		lw_ColorBuff = Space( MAX_WCHAR )  
  		lw_SizeBuff = Space( MAX_WCHAR )  
  		ll_Themed = (GetCurrentThemeName( @lw_ThemeFileName, MAX_WCHAR, ;  
  		        @lw_ColorBuff, MAX_WCHAR, ;  
  			@lw_SizeBuff, MAX_WCHAR ) == 0)  
    
  		If ll_Themed  
 			*-- C:\WINDOWS\Resources\themes\Luna\Luna.msstyles  
  			ThisForm.ThemeFileName = MakeANSI( lw_ThemeFileName )  
    
  			lc_ColorBuff = MakeANSI( lw_ColorBuff )  
  			Do Case  
  				Case (lc_ColorBuff == 'NormalColor')  
  					ThisForm.ThemeColorScheme = 'Default'  
  					With ThisForm.pgfProperties.ThemedTitlePage1.UserControls.SprGrid  
  						STORE RGB(210,229,255) TO .Column1.Header1.BackColor, .Column2.Header1.BackColor, ;  
  												  .Column3.Header1.BackColor, .Column4.Header1.BackColor  
  						STORE RGB(0,0,0) TO .Column1.Header1.ForeColor, .Column2.Header1.ForeColor, ;  
  											.Column3.Header1.ForeColor, .Column4.Header1.ForeColor  
  					EndWith  
  				Case (lc_ColorBuff == 'Metallic')  
  					ThisForm.ThemeColorScheme = 'Silver'  
  					With ThisForm.pgfProperties.ThemedTitlePage1.UserControls.SprGrid  
  						STORE RGB(219,220,232) TO .Column1.Header1.BackColor, .Column2.Header1.BackColor, ;  
  												  .Column3.Header1.BackColor, .Column4.Header1.BackColor  
  						STORE RGB(0,0,0) TO .Column1.Header1.ForeColor, .Column2.Header1.ForeColor, ;  
  											.Column3.Header1.ForeColor, .Column4.Header1.ForeColor  
  					EndWith  
  				Otherwise  
  					ThisForm.ThemeColorScheme = 'Olive Green'  
  					With ThisForm.pgfProperties.ThemedTitlePage1.UserControls.SprGrid  
  						STORE RGB(228,235,200) TO .Column1.Header1.BackColor, .Column2.Header1.BackColor, ;  
  												  .Column3.Header1.BackColor, .Column4.Header1.BackColor  
  						STORE RGB(0,0,0) TO .Column1.Header1.ForeColor, .Column2.Header1.ForeColor, ;  
  											.Column3.Header1.ForeColor, .Column4.Header1.ForeColor  
  					EndWith  
  			Endcase  
    
  			lc_SizeBuff = MakeANSI( lw_SizeBuff )  && MakeANSI в main.prg  
  			Do Case  
  				Case (lc_SizeBuff == 'NormalSize')  
  					ThisForm.ThemeFontSize = 'Normal'  && 'Normal'  
  				Case (lc_SizeBuff == 'LargeFonts')  
  					ThisForm.ThemeFontSize = 'Large Fonts'  
  				Otherwise  
  					ThisForm.ThemeFontSize = 'Extra Large Fonts'  
  			Endcase  
  		EndIf  
  	Else  
 		* 'Theme is not active ( Windows Classic )'  
  		With ThisForm.pgfProperties.ThemedTitlePage1.UserControls.SprGrid  
  			STORE RGB(210,229,255) TO .Column1.Header1.BackColor, .Column2.Header1.BackColor, ;  
  									  .Column3.Header1.BackColor, .Column4.Header1.BackColor  
  			STORE RGB(32,77,137) TO .Column1.Header1.ForeColor, .Column2.Header1.ForeColor, ;  
  									.Column3.Header1.ForeColor, .Column4.Header1.ForeColor  
  		EndWith  
  	EndIf  
  EndIf  
 *  
 * Процедура преобразования строки в кодировке Unicode (wide characters) в double-byte characters, а затем в single-byte characters (ANSI-строку)  
  PROCEDURE MakeANSI( tw_String )  
  LOCAL lc_String, ln_Pos  
    
  lc_String = Strconv( Strconv( tw_String, 6 ), 2 )  
  ln_Pos = At( Chr(0), lc_String )  
  If (ln_Pos > 0)  
  	lc_String = Left( lc_String, ln_Pos - 1 )  
  Endif  
    
  Return lc_String  
  ENDPROC
Установку атрибутов столбцов, лучше заменить на цикл FOR EACH и поместить всё это в класс.
Кто имеет возможность протестировать этот код на Vista, напишите свои отзывы и предложения.
Ratings: 0 negative/0 positive

Re: Можно ли сделать внешний вид Grid'а совсем плоским
Crispy

Сообщений: 18559
Дата: 23.10.08 12:22:45
rvc44
Да, использовались возможности упомянутой Sedna (VFPX). Зайдите по указанной выше ссылке, там есть всё необходимое. Файл Themes.xml придется таскать за своим проектом.
Маленький вопросик типа.
Пока не смотрел еще саму эту штуку. Мельком глянул код просто.
А возможно ли в ней скажем подключать - только для своего приложения! - установленную, но неактивную тему? Или это из области фантастики?
А так неплохо бы было.


------------------
В действительности все иначе, чем на самом деле.
                                      (Антуан де Сент-Экзюпери)
Ratings: 0 negative/0 positive

Re: Можно ли сделать внешний вид Grid'а совсем плоским
ssa

Сообщений: 12712
Откуда: Москва
Дата: 23.10.08 12:36:04
Можно.


------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive

Re: Можно ли сделать внешний вид Grid'а совсем плоским
Crispy

Сообщений: 18559
Дата: 23.10.08 16:24:12
Тогда безусловно это вещь супер!
А то недавно как-то наткнулся на любопытные темы - в них и кнопки и грид довольно-таки оригинальные. Вот тут показаны некоторые скриншоты: forum.foxclub.ru
Единственно, что мешает их использовать - в Windows и других программах интерфейс получается не совсем привычным, что для других пользователей может оказаться неприемлемым.
Поэтому возможность подключать тему, помимо активной на данный момент для самой Windows, была бы очень даже неплохой.


------------------
В действительности все иначе, чем на самом деле.
                                      (Антуан де Сент-Экзюпери)
Ratings: 0 negative/0 positive

Re: Можно ли сделать внешний вид Grid'а совсем плоским
rvc44
Автор

Сообщений: 2211
Откуда: Тамбов
Дата: 23.10.08 18:41:36
Интересно сегодня было наблюдать (а теперь за проектом приходится таскать файл Themes.xml), что при инсталляции программы с "такой красивой формой" (см.выше) на 2 компьютера с Vista: на одном все сразу заработало, а на другом - нет, выдав ошибку:
[attachment 7089 VistaMsXml4.JPG]

Подскажите, пожалуйста, какой пакет поддержки XML лучше всего доустановить на эту Висту?
... и что теперь, впредь, дополнительно добавлять в InstallShield при создании дистрибутива для поддержки полноценной работы с XML, там, где её нет ?

Я просто был уверен, что поддержка XML есть в Vista по-умолчанию! НИ-ФИ-ГА!

P.S. Еще интересно, что оба компьютера с Vista покупались в одно и то же время, в одной и той же фирме в славном г.Воронеже, и оба - абсолютно новые!



Исправлено: rvc44, 23.10.08 18:43
Ratings: 0 negative/0 positive

Re: Можно ли сделать внешний вид Grid'а совсем плоским
ssa

Сообщений: 12712
Откуда: Москва
Дата: 23.10.08 18:46:49
rvc44
Я просто был уверен, что поддержка XML есть в Vista по-умолчанию! НИ-ФИ-ГА!
Ну, вы, блин, даете! (С) Как быстро некоторые делают далеко идущие выводы...
Поддержка XML в Висте есть. Только она версии 6. А в фоксовых тулзах, с легкой руки мелкософта, явно прописывают создание парсера конкретно 4 версии. Только из-за этого надо или тащить на Висту MSXMLPaser 4 или искать в исходниках и убирать привязку именно к 4 версии.


------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive

Re: Можно ли сделать внешний вид Grid'а совсем плоским
rvc44
Автор

Сообщений: 2211
Откуда: Тамбов
Дата: 24.10.08 08:46:08
Странно, почему тогда на другом компьютере с Vista запустилось? Оба ведь из коробки!

Цитата:
Поддержка XML в Висте есть. Только она версии 6.
А типа, шестая четвертую не понимает?
А завтра будет 8-я, которая не будет понимать ни 6-ю, ни 4-ю?
Полный бардак и анархия!
Вот если бы был бы один MSXML Paser 4, который не понимает 6-ю версию - это было бы логично,
а так логики нет: получается программы можно разрабатывать только на час/день/полгода/год?
А что потом? Потом они работать перестанут, после выхода очередной Windows 7?
Неужели ничего нельзя придумать, как это обойти, кроме как прописывать в исходниках конкретную версию парсера?

И вообще, в пректе работа с Themes.xml целиком идет через:
  
  m.loXA = Createobject("XMLAdapter")
Что не включено в дистрибутив для поддержки XMLAdapter?
Или класс XMLAdapter предполагает наличие обязательно MSXML Paser версии именно 4?
В help'е по этому поводу я ничего не нашел!



Исправлено: rvc44, 24.10.08 09:00
Ratings: 0 negative/0 positive

Re: Можно ли сделать внешний вид Grid'а совсем плоским
VictorK

Сообщений: 211
Откуда: Москва
Дата: 24.10.08 09:16:23
Vista распределяет MSXML. Использует разные версия для разных целей. Для решения этой проблемы достаточно запустить Windows Update. Пакет обновления - KB941833. Я сталкивался с этой проблемой. Да и нетолько VFP требует этот пакет,но и Nero, и другие приложения работающие с XML, которые еще не адаптированны для Vista или используют для совместимости.
Ratings: 0 negative/0 positive

Re: Можно ли сделать внешний вид Grid'а совсем плоским
ssa

Сообщений: 12712
Откуда: Москва
Дата: 24.10.08 09:25:27
rvc44
Странно, почему тогда на другом компьютере с Vista запустилось? Оба ведь из коробки!
Цитата:
Поддержка XML в Висте есть. Только она версии 6.
А типа, шестая четвертую не понимает?
А завтра будет 8-я, которая не будет понимать ни 6-ю, ни 4-ю?
Полный бардак и анархия!
Вот если бы был бы один MSXML Paser 4, который не понимает 6-ю версию - это было бы логично,
а так логики нет: получается программы можно разрабатывать только на час/день/полгода/год?
А что потом? Потом они работать перестанут, после выхода очередной Windows 7?
Неужели ничего нельзя придумать, как это обойти, кроме как прописывать в исходниках конкретную версию парсера?

И вообще, в пректе работа с Themes.xml целиком идет через:
  
  m.loXA = Createobject("XMLAdapter")
Что не включено в дистрибутив для поддержки XMLAdapter?
Или класс XMLAdapter предполагает наличие обязательно MSXML Paser версии именно 4?
В help'е по этому поводу я ничего не нашел!
Для плохо умеющих читать повторяю еще раз:
Цитата:
А в фоксовых тулзах, с легкой руки мелкософта, явно прописывают создание парсера конкретно 4 версии


------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive

Re: Можно ли сделать внешний вид Grid'а совсем плоским
rvc44
Автор

Сообщений: 2211
Откуда: Тамбов
Дата: 24.10.08 10:10:09
2ssa
Да прочитал я, прочитал! Хочется, конечно, знать Ваш источник...
Но это не главное. Главное - какой вариант из 3 имеющихся включать в сборку дистрибутива:
  
  MSXML 4.0 C:\Program Files\Common Files\Merge Modules\msxml4sxs32.msm  4.20.9818.0  
  msxml4.Manifest  3478  
  msxml4.cat       7239  
  msxml4.dll       1233920 4.20.9818.0  
  msxml4r.Manifest 500  
  msxml4r.cat      7243  
  msxml4r.dll      82432   4.10.9404.0  
    
  MSXML 4.0 C:\Program Files\Common Files\Merge Modules\msxml4sys32.msm  4.20.9818.0  
  msxml4.dll       1233920 4.20.9818.0  
  msxml4a.dll      44544   4.10.9404.0  
  msxml4r.dll      82432   4.10.9404.0  
    
  XML 4.0   C:\Program Files\Common Files\Merge Modules\msxml4.msm       4.10.9404.0  
  msxml4.Manifest  3489  
  msxml4.cat       9675  
  msxml4.dll       1230336 4.10.9404.0  
  msxml4a.dll      44544   4.10.9404.0  
  msxml4r.Manifest 500  
  msxml4r.cat      9679  
  msxml4r.dll      82434   4.10.9404.0  
  msxml4r.dll      82434   4.10.9404.0  
  msxml4.dll       1230336 4.10.9404.0
Понятно, что лучше более свежую сборку 4.20.x, чем 4.10.x, т.е. 3-й вариант отпадает
А вот чет отличается вариан msxml4sxs32.msm от msxml4sys32.msm?
И что за файлы msxml4a.dll, msxml4r.dll так ли они необходимы, или достаточно msxml4.dll?
Ratings: 0 negative/0 positive

Re: Можно ли сделать внешний вид Grid'а совсем плоским
ssa

Сообщений: 12712
Откуда: Москва
Дата: 24.10.08 10:40:44
Источник, говоришь? Их есть у меня. Берем первый попавшийся исходник из Tools\Xsource, например TaskPane и в единственном .H-файле в первых же строчках видим:
* MSXML DOM parser  
  #define MSXML_PARSER		"MSXML2.DOMDocument.4.0"
Достаточно при компиляции убрать из процитированного ".4.0" и перекомпилировать и все встает на свои места.


------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive



Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 4 (Гостей: 4)

© 2000-2021 Fox Club 
Яндекс.Метрика