ورود

View Full Version : عوض کردن رنگ زمینه ole ها



javad_hosseiny
چهارشنبه 29 تیر 1384, 18:38 عصر
برای عوض کردن رنگ زمینه ابزاری مثل treeview و یا webrowswer از چه proprety باید استفاده کرد ؟

binyaz2003
سه شنبه 04 مرداد 1384, 16:24 عصر
این ها جوابهایی هست که از سایت UniversalThread گرفتم :
For some activex, you can only do it with API calls, here is an example to change the backcolor of items in a Treeview.

DECLARE INTEGER SendMessage IN user32;
INTEGER hWnd, INTEGER Msg,;
INTEGER wParam, INTEGER lParam

DECLARE INTEGER SetWindowLong IN user32.DLL ;
INTEGER hWnd, INTEGER nIndex, INTEGER dwNewLong

DECLARE INTEGER GetWindowLong IN user32.DLL ;
INTEGER hWnd, INTEGER nIndex

GWL_STYLE = -16
TVM_SETBKCOLOR = 4381
TVM_SETTEXTCOLOR = 4382
TVM_GETBKCOLOR = 4383
TVM_GETTEXTCOLOR = 4384
TVM_SETINSERTMARKCOLOR=4389
TVM_GETINSERTMARKCOLOR=4390
TVS_HASLINES = 2

colors=RGB(255,251,240)

FOR EACH node IN thisform.oletreeview.Nodes
* thisform.oletreeview.Nodes(x).BackColor =colors
node.backcolor = colors
NEXT
DECLARE INTEGER SendMessage IN user32;
INTEGER hWnd, INTEGER Msg,;
INTEGER wParam, INTEGER lParam

DECLARE INTEGER SetWindowLong IN user32.DLL ;
INTEGER hWnd, INTEGER nIndex, INTEGER dwNewLong

DECLARE INTEGER GetWindowLong IN user32.DLL ;
INTEGER hWnd, INTEGER nIndex

GWL_STYLE = -16
TVM_SETBKCOLOR = 4381
TVM_SETTEXTCOLOR = 4382
TVM_GETBKCOLOR = 4383
TVM_GETTEXTCOLOR = 4384
TVM_SETINSERTMARKCOLOR=4389
TVM_GETINSERTMARKCOLOR=4390
TVS_HASLINES = 2

colore=RGB(255,251,240)

FOR EACH node IN thisform.oletreeview.Nodes
* thisform.oletreeview.Nodes(x).BackColor =colore
node.backcolor = colore
NEXT




=SendMessage(thisform.oletreeview.hWnd, TVM_SETBKCOLOR, ;
0,colore)
=SendMessage(thisform.oletreeview.hWnd, TVM_GETTEXTCOLOR , ;
0,RGB(0,255,0))

lngStyle = GetWindowLong(thisform.oletreeview.hWnd, GWL_STYLE)
=SetWindowLong(thisform.oletreeview.hWnd, GWL_STYLE, ;
lngStyle - TVS_HASLINES)
=SetWindowLong(thisform.oletreeview.hWnd, GWL_STYLE, lngStyle)
thisform.oletreeview.Refresh()
thisform.Refresh()

binyaz2003
سه شنبه 04 مرداد 1384, 16:25 عصر
For example:


loNode = Thisform.oTree.SelectedItem
loNode.ForeColor = RGB( 255, 0, 0 )
Regards,
Marcia G. Akins
Tightline Computers, Inc.

binyaz2003
سه شنبه 04 مرداد 1384, 16:25 عصر
Each node has properties ForeColor and BackColor (for common controls version 6.x)

For cc 5.x you can use API:


#DEFINE TV_FIRST 0x1100 && TreeView messages
#DEFINE TVM_SETBKCOLOR (TV_FIRST + 29)
#DEFINE TVM_SETTEXTCOLOR (TV_FIRST + 30)
#DEFINE TVM_SETLINECOLOR (TV_FIRST + 40)

DECLARE LONG SendMessageA IN User32 ;
LONG hWnd, ;
LONG wMsg, ;
LONG wParam , ;
LONG lParam

SendMessageA(This.hWnd,;
TVM_SETBKCOLOR ,;
0 ,;
This.BackColor)

SendMessageA(This.hWnd,;
TVM_SETTEXTCOLOR ,;
0 ,;
This.ForeColor)


SendMessageA(This.hWnd,;
TVM_SETLINECOLOR ,;
0 ,;
This.LineColor)
MartinJ

javad_hosseiny
چهارشنبه 02 شهریور 1384, 19:48 عصر
با تشکر از آقای حسین زاده
به علت چند کد ارائه شده (که برخی از نمونه ها کار نمی کند) چرا که اصلا treeview ویژگی به نام backcolor و یا forecolor ندارد و .... و بنده اون نمونه کدی را که درست کار می کند (البته با مقدار اندکی تصحیح) جهت استفاده بقیه کاربران در اینجا قرار می دهم


DECLARE INTEGER SendMessage IN user32 INTEGER hWnd, INTEGER Msg,INTEGER wParam, INTEGER lParam
DECLARE INTEGER GetWindowLong IN user32 INTEGER hWnd, INTEGER nIndex
*for change back color treeview
=SendMessage(thisform.treeview.hWnd, 4381, 0, RGB(220,245,233))
*for change text color fill in treeview
=SendMessage(thisform.treeview.hWnd, 4382 , 0,RGB(255,0,0))
lngStyle = GetWindowLong(thisform.treeview.hWnd, -16)
=SetWindowLong(thisform.treeview.hWnd, -16, lngStyle - 2)
=SetWindowLong(thisform.treeview.hWnd, -16, lngStyle)

من از این کد برای تغییر زمینه ole های دیگر همچون webbrowser و یا oleposition خواستم استفاده کنم در اولی که اصلا نپذیرفت (البته می توان با تغییر در خود متن تگ های صفحات html این کار را کرد اما در نظر بگیرید که وقتی با حجم انبوهی از فایلهای وب سروکار داریم این کار همچین جالب نیست) و در دومی پذیرفت ولی تغییری ایجاد نشد (احتمالا اعداد پارامتر ورودی (پارامتر سوم) صحیح نمی باشد)
به هر حال دوستان که موفق به پیدا کردن کد مربوط به تغییر رنگ زمینه این ابزار شدند ممنون می شوم که ما را هم باخبر کنند.