如何编辑图形字段的值?(50分)

  • 主题发起人 主题发起人 delphifaner
  • 开始时间 开始时间
D

delphifaner

Unregistered / Unconfirmed
GUEST, unregistred user!
各位大侠;
在下用dbimage部件对图形字段‘示意图’进行编辑,
我用如下代码,当双击该部件dbmg时,调用'pbrush.exe'
进行编辑,但是,编辑前还要把剪切板上的图片取回来才
能编辑,怎么才能一双击就在画笔中看到我的图片,并且
在退出画笔程序时直接把编辑过的图片存入本字段中。而不用
先把图片放到剪切板上在用dbmg.pastefromclipboard把它
存入字段呢?
procedure Twsdzshjfrm.dbmgDblClick(Sender: TObject);
begin
if t1.FieldByName('示意图').value<>NULL then
dbmg.CopyToClipboard;
winexec('pbrush.exe',sw_normal)
end;
一点小分,不成敬意!
 
两个思路:
1. 可以放一个OleContainer把图像倒入OleContainer,修改后在修改数据库(具体没
做过).
2. 按照你现在的做法, 但是不是用WinExec而是用CreateProcess来启动画笔程序,
然后发送消息自动剪贴. 再做一个hook截获画笔的WM_Close消息, 先将复制到剪贴
板上然后在关闭.
 
张兄:
能不能再详细介绍你的第二条方法,如何用
CreateProcess(参数设置如何?)来启动画笔程序?
怎么发送消息自动剪贴....?敬请高手相助!谢谢!
 
CreateProcess以前的问题中有教详细的讨论,你查一下。
可以给画笔发送一个WM_COMMAND消息,不过你需要知道粘贴的消息ID。
 
张兄:
我查了CreateProcess和 WM_COMMAND两个函数但不知
如何设置参数,特别是这种情况如何使用,如何给画笔发送
一个WM_COMMAND消息,怎么知道粘贴的消息ID?

WM_COMMAND
wNotifyCode = HIWORD(wParam);
// notification code
wID = LOWORD(wParam);
// item, control, or accelerator identifier
hwndCtl = (HWND) lParam;
// handle of control
BOOL CreateProcess(
LPCTSTR lpApplicationName, // pointer to name of executable module
LPTSTR lpCommandLine, // pointer to command line string
LPSECURITY_ATTRIBUTES lpProcessAttributes, // pointer to process security attributes
LPSECURITY_ATTRIBUTES lpThreadAttributes, // pointer to thread security attributes
BOOL bInheritHandles, // handle inheritance flag
DWORD dwCreationFlags, // creation flags
LPVOID lpEnvironment, // pointer to new environment block
LPCTSTR lpCurrentDirectory,// pointer to current directory name
LPSTARTUPINFO lpStartupInfo, // pointer to STARTUPINFO
LPPROCESS_INFORMATION lpProcessInformation // pointer to PROCESS_INFORMATION
);
敬请高手相助!最好帮我写出具体的代码,分不够,我还有,谢谢!
 
50分
是够小分得了
 
CreateProcess在本论坛中有讨论, 并且有实例。画笔消息的ID需要使用一些其他
工具察看画笔执行文件的资源部分中的菜单项,也可以自己编程序查出来
 
Hi, delphifaner
编辑图形字段用DBImage不是很好,我一直就没弄通,但OLE方式可以进行对图像的
操作。可参看本人提的问题“OLE”分类,那里有较详细的说明和使用,它已解决了
本人的实际问题,若还有不明白的,及时贴出。
重点:主要使用TMemoryStream.
 
多人接受答案了。
 
后退
顶部