终于在TreeView里加进了背景!!!

COKING COKING 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
Graphics::TBitmap *bmp;
TWndMethod ms;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
bmp=new Graphics::TBitmap();
bmp->LoadFromFile("E:\\Gif\\071_03.BMP");
TV->Canvas->Brush->Bitmap=bmp;
ms=TV->WindowProc;
TV->WindowProc=proc;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::proc(TMessage &msg)
{
if(msg.Msg==WM_ERASEBKGND) return;
if(msg.Msg==WM_PAINT)
{
TRect ARect=TV->ClientRect;
int W=ARect.Width();
int H=ARect.Height();

HDC memdc=CreateCompatibleDC(TV->Canvas->Handle);
HBITMAP membmp=CreateCompatibleBitmap(TV->Canvas->Handle,W,H);
SelectObject(memdc,membmp);
ms(msg);
BitBlt(memdc,0,0,W,H,TV->Canvas->Handle,0,0,SRCCOPY);

HDC maskdc=CreateCompatibleDC(TV->Canvas->Handle);
HBITMAP maskbmp=CreateBitmap(W,H,1,1,NULL);
SelectObject(maskdc,maskbmp);
BitBlt(maskdc,0,0,W,H,memdc,0,0,SRCCOPY);

TV->Canvas->FillRect(ARect);

SetBkColor(memdc,RGB(0,0,0));
SetTextColor(memdc,RGB(255,255,255));
BitBlt(memdc,0,0,W,H,maskdc,0,0,SRCAND);

SetBkColor(TV->Canvas->Handle,RGB(255,255,255));
SetTextColor(TV->Canvas->Handle,RGB(0,0,0));

BitBlt(TV->Canvas->Handle,0,0,W,H,maskdc,0,0,SRCAND);
BitBlt(TV->Canvas->Handle,0,0,W,H,memdc,0,0,SRCPAINT);

DeleteObject(memdc);
DeleteObject(membmp);
DeleteObject(maskdc);
DeleteObject(maskbmp);
}
else
ms(msg);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormDestroy(TObject *Sender)
{
delete bmp;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::TVExpanded(TObject *Sender, TTreeNode *Node)
{
TV->Repaint();
}
//---------------------------------------------------------------------------
...全文

相关推荐

treeview节点选中后添加背景色

treeview节点在鼠标放上去时可以设置变色,但是选中后鼠标离开不能保持变色,本资源用javascript脚步实现选中离开后依然保持变色,直到选中另一个节点

justlike2008

Delphi 13.1 集成 iocomp OPC 控件:工控上位机通讯与数据可视化实战

OPC 是工业自动化领域实现设备数据交换的核心标准,其经典 OPC DA 协议基于 COM 技术,通过客户端与服务器架构完成标签读写与订阅。在 Delphi 中集成 OPC 控件,可让 Object Pascal 项目直接连接西门子 S7、WinCC 等 OPC 体系,实现批量数据请求、多线程安全更新与实时曲线显示。iocomp OPC 控件包将通讯与仪表控件打包,解决了 Delphi 13.1 下 OPC 连接稳定性与可视化难题,适用于老工控项目升级、上位机开发及现场数据采集场景。

weixin_34112181

WinForm UI模板化开发:从窗体基类到控件自绘的完整实践

桌面应用开发中,原生控件样式老旧、窗体缩放布局错乱、跨线程更新界面卡顿是高频痛点。通过理解控件自绘(OwnerDraw)与DPI感知机制,可以构建一套可复用的UI基础设施。本文从分层架构、主题系统、线程安全UI更新等原理切入,阐述如何将界面层从业务逻辑中解耦,实现高效封装与批量复用。该方案适用于上位机软件、管理信息系统等场景,能显著缓解WinForm界面卡顿、窗体缩放尺寸异常等常见问题。围绕控件美化、布局适配与异步更新,最终沉淀为一套开箱即用的模板,帮助开发者快速交付专业且稳定的桌面应用界面。

weixin_34268843

Python+Tkinter+SQLite社团管理系统:从数据库设计到GUI完整实战

数据库设计是管理系统开发的地基,合理的表结构能大大简化业务逻辑。Python凭借丰富的内置库成为快速开发原型的热门选择,Tkinter无需额外安装即可构建桌面GUI,而SQLite单文件数据库更是课程设计中的轻量级神器。理解数据库连接、增删改查、联表查询等基本原理,再结合分层架构思想,就能让系统代码清晰易维护。这种技术组合非常适合社团管理、学生选课、图书借阅等典型教务场景,也常被用作毕业设计的第一版框架。本文以一套基于Python+Tkinter+SQLite的社团管理系统为实例,完整展示需求分析、五张数据

银星皓月

Delphi 13.1 跨平台控件 TMS FNC UI Pack v7.1.1.0 源码实战:VCL 与 FMX 一套代码

跨平台 UI 开发中,VCL 与 FMX 的框架差异常导致代码重复。TMS FNC UI Pack 通过分层架构,将核心逻辑与平台适配解耦,实现一套源码同时编译到 VCL 和 FMX。其 Full Source 版本允许开发者深入适配层,灵活定制控件行为。在 Delphi 13.1 中,该套件支持从 XE7 到 13 Florence 的版本,适用于桌面与移动端的数据浏览界面开发。安装时需注意编译顺序与库路径配置,运行时关注 FMX 下的尺寸与字体渲染。对于需要统一界面风格、减少重复劳动的中高级开发者,这套

weixin_34184158
评论 11
收藏 已收藏
分享
返回顶部
COKING
茶馆 551 成员 20,044 内容