ringtx mouse buttonbutton

相信很多童鞋都遇到过这种问题,找不到pch文件,看这个描述肯定是与预编译头有问关系。(预编译头有神马作用就不说了,可以自己了解下)。一般遇到上面的问题很有可能是拷贝工程的时候,把stdafx.h stdafx.cpp文件删除了,而此时你即使把这两个文件再加入工程还是会报上面的错误。要重现这个错误也很简单,按上面的说法,新建一个标准工程,然后把stdafx.h stdafx.cpp文件删除,再编译肯定会报这个错误的。
这个错误的根源在于,编译器发现有源文件(CPP,C&&)带有/Yu编译选项,但是找不到一个源文件带有/Yc选项,解决方法也就很明显了,至少有两个:
1、把所有源文件都设置为不使用预编译头,如果文件少还好说,如果多而且还在不同的Filter里面的话,那就坑爹了。
2、随意设定一个源文件为创建预编译头属性。当然最好还是加入 stdafx.cpp文件,并对其进行设置。注意到设置Precompiled Headers右边的第二行,Create/User PCH Through File,在这里指定创建预编译头针对的头文件。正常情况下(如果你没改动)应该是StdAfx.h文件,如果你另外指定了一个文件,那么需要在所有的源文件的最前面包含这个头文件,你懂的。如果你不怎么做,会报一个更&恐怖&的错误,fatal error C1010: unexpected end of file while looking for precompiled header。简直比坑爹还坑爹。相信这个错误遇到的人就更多了&&
&&&对于/Yc选项可以去看下MSDN上的描述&/en-us/library/7zc28563.aspx &,相信应该就比较清楚了。
本文已收录于以下专栏:
相关文章推荐
vc6.0常见错误fatal error C1083: Cannot open precompiled header file: 'Debug/**.pch': No such file or dir...
相信很多童鞋都遇到过这种问题,找不到pch文件,看这个描述肯定是与预编译头有问关系。(预编译头有神马作用就不说了,可以自己了解下)。一般遇到上面的问题很有可能是拷贝工程的时候,把stdafx.h st...
fatal error C1083: Cannot open precompiled header file:
这时因为该模块没有包括预编译头文件“stdafx.h”的缘故。 
VC用一个...
环境:VC执行:编译程序问题描述:Cannot open precompiled header file: Debug/****.pch: No such file or directory我的解决方...
C语言快速入门系列(三)
超简洁的浓缩C语言教程就在这里,有兴趣的可以看看,用图的方式将知识点串联到一起!
在前面的学习中,我们对C语言的基本语法进行了了解,可以暂时理解成我们学了单词;
现在要做得就...
C语言快速入门系列(四)
二张图带你灰C语言数组,超精华的知识点,不信可以瞅瞅!
经过我们前面三个系列的学习,我们对C语言有了一定的了解;
现在要你写这样一个代码应该不难吧:
输入五个学生的成绩,然后...
转自:/xiaocai0923/archive//2203143.html
--------------------Configu...
原文:关于fatal error C1083: Cannot open precompiled header file: /'Debug/v13_3.pch/': 错 - zhoujie6762156...
解决方案:
1 安装了多次(Microsoft Visual C++ 6.0 SP6 简体中文企业版),还是不成功,以前我都是重装系统再装vc就ok了,可把我整惨了,往事不堪回首啊,我简直恨死了...
执行:编译程序
问题描述:Cannot open precompiled header file: 'Debug/****.pch': No such file or directory
他的最新文章
讲师:王哲涵
讲师:韦玮
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)& &&&&&&StringGrid组件用于建立显示字符串的网格,与电子表格相似。它可使表格中的字符串和相关对象操作简单化。StringGrid组件提供了许多可控制网格外观念的属性,以及利用表格的结构响应用户操作的事件和方法。StringGrid具有关联对象与网格中的每个字符串的作用,这些对象为用户封装了字符串表示的信息或行为。
一、Delphi StringGrid控件的属性及使用说明
1、固定行及固定列:& (没有固定行列的时候,不能在运行时调节各个单元格的宽度和高度)
& StringGrid.FixedCols := 固定行数;
& StringGrid.FixedRows := 固定列数;&&
& StringGrid.FixedColor := 固定行列的颜色;&&
& StringGrid.Color := 未固定行列的颜色(资料区);&
2、资料区行列的宽度和高度:&
& StringGrid.DefaultColWidth := 內定全部的宽度;&&
& StringGrid.DefaultRowHeight := 內定全部的高度;&&
& StringGrid.ColWidths[Index:Longint]:=某一行整行的宽度;&&&&
& StringGrid.RowHeights[Index:Longint]:=某一列整列之高度;&&
3、资料区(CELL)指定(将某一行列停在资料区最左上角)
& StringGrid.LeftCol:=某一行號;&&
& StringGrid.TopRow:=某一列號;&&
4、焦点移动到某一单元格内:&&&&
& StringGrid.Row:=?;&&
& StringGrid.Col:=?;&&
5、设定资料区行数和列数:(包含固定行、列亦算在內)&&&&
& StringGrid.RowCount:=?;&&
& StringGrid.ColCount:=?;&&
6、给某一个单元格赋值(从0开始):&&
& StringGrid.Cells[Col值&& ,&& Row值]:=字串;&&
7、判断鼠标处于哪一个单元格中&&
& 在StringGrid的Mouse事件中(UP,DOWN或MOVE)下:&&
& VAR&& C&& ,&& R&& :&& L&&
& StringGrid.MouseToCell(X,Y,C,R);&& {X,Y由MOUSE事件传入}&&
& {取回&& C&& ,&& R&& 即为目前之Col&& ,&& Row值&& }&&&& &&&
8、StringGrid之Options属性:&&
& 若要在执行中开启合租关闭Options某一功能如&& ‘goTABS’,则可以如下:&&
& 开启:& StringGrid.Options:=&& StringGrid.Options&& +&& [goTABS];&&
& 关闭: &StringGrid.Options:=&& StringGrid.Options&& -&& [goTABS];&&
& goFixedHorzLine&& 固定列之间的水平分割线&
& goFixedVertLine&& &固定行之间的垂直分割线&&
& goHorzLine& &&&&&&可滚动列之间的水平分割线 &&&
& goVertLine& &&&&&&&可滚动行之间的垂直分割线&
& goRangeSelect&& &&&可多重选择单元,如果包含goEditing,则忽略goRangeSelect。
& goDrawFocusSelected&& 用鼠标多重选择时,第一个选择的单元反白&&
& goRowSizing& &&&&&&用鼠标可列高&&
& goColSizing&& &&&&&&用鼠标可改变行寬&&
& goRowMoving&& &&&&用鼠标&&
& goColMoving&& &&&&&用鼠标可移动可滚动列&
& goEditing &&&&&&&&&&可编辑单元的内容 &
& goAlwaysShowEditor&& 表格总是编辑模式,不需要F2或ENTER即有等待输入的游标。如果Options不包含goEditing或包含goRowSelect,则goAlwaysShowEditor无效。
& goTabs&& &&&&&&&&&&&用TAB及Shift+TAB可切换表格单元
& goRowSelect&& 用滑鼠點一下可選取整列(亦與滑鼠可多重選擇互斥)&&
& goThumbTracking&& 捲軸動時GRID跟著動,否則捲軸動完放開,GRID才動& &&
一、Delphi StringGrid控件的常用操作代码
// 初始化StirngGrid的首行和首列
procedure TReferContentForm.SetSGridTitle(SGrid: TSuiStringGrid);
& ColIndex, RowIndex:
& //画第一行(标题栏)
& for colIndex := 1 to SGrid.ColCount do
&&& SGrid.Cells[colIndex, 0] := '列名' + Chr(ord('A') - 1 + colIndex);
& //画第一列(数字栏)
& SGrid.ColWidths[0] := 30;
& SGrid.Cells[0, 0] := '序列';
& for RowIndex := 1 to SGrid.RowCount - 1 do
&&& SGrid.Cells[0, RowIndex] := IntToStr(RowIndex);
// 清楚StirngGrid,指定行数和列数
procedure TReferContentForm.ClearSGrid(SGrid: TSuiStringG aRow, aCol: integer);
& SGrid.RowCount := aR
& SGrid.ColCount := aC
& for i := 0 to SGrid.RowCount - 1 do //如果不清表头则从1开始
&&& SGrid.Rows[i].C
& setSGridTitle(SGrid);
// 添加一行
procedure TReferContentForm.mmiN1Click(Sender: TObject);
& SGrid: TsuiStringG
& SGrid := TsuiStringGrid(suiPMSGrid.PopupComponent);
& if SGrid && nil then
&&& SGrid.RowCount := SGrid.RowCount + 1;
&&& SetSGridTitle(SGrid);
// 插入一行
procedure TReferContentForm.mmiN2Click(Sender: TObject);
& i, curRow:
& SGrid: TsuiStringG
& SGrid := TsuiStringGrid(suiPMSGrid.PopupComponent);
& if SGrid && nil then
&&& curRow := SGrid.R //记录当前选定行的位置
&&& SGrid.rowcount := SGrid.rowcount + 1;
&&& for i := SGrid.rowcount - 1 downto curRow + 1 do
&&&&& SGrid.Rows[i] := SGrid.Rows[i - 1];
&&& SGrid.Rows[curRow].C
&&& SetSGridTitle(SGrid);
// 删除当前一行
procedure TReferContentForm.mmiN3Click(Sender: TObject);
& SGrid: TsuiStringG
& SGrid := TsuiStringGrid(suiPMSGrid.PopupComponent);
& if SGrid && nil then
&&& for i := SGrid.row to SGrid.RowCount - 1 do
&&&&& SGrid.Rows[i] := SGrid.Rows[i + 1];
&&& SGrid.RowCount := SGrid.RowCount - 1; //删除
&&& SetSGridTitle(SGrid);
// 添加一列
procedure TReferContentForm.mmiN5Click(Sender: TObject);
& SGrid: TsuiStringG
& SGrid := TsuiStringGrid(suiPMSGrid.PopupComponent);
& if SGrid && nil then
&&& SGrid.ColCount := SGrid.ColCount + 1;
& SetSGridTitle(SGrid);
// 插入一列
procedure TReferContentForm.mmiN6Click(Sender: TObject);
& i, CurCol:
& SGrid: TsuiStringG
& SGrid := TsuiStringGrid(suiPMSGrid.PopupComponent);
& if SGrid && nil then
&&& CurCol := SGrid.C //记录当前选定行的位置
&&& SGrid.ColCount := SGrid.ColCount + 1;
&&& for i := SGrid.ColCount - 1 downto CurCol + 1 do
&&&&& SGrid.Cols[i] := SGrid.Cols[i - 1];
&&& SGrid.Cols[CurCol].C
& SetSGridTitle(SGrid);
// 删除一列
procedure TReferContentForm.mmiN7Click(Sender: TObject);
& SGrid: TsuiStringG
& SGrid := TsuiStringGrid(suiPMSGrid.PopupComponent);
& if SGrid && nil then
&&& for i := SGrid.Col to SGrid.ColCount - 1 do
&&&&& SGrid.Cols[i] := SGrid.Cols[i + 1];
&&& SGrid.ColCount := SGrid.ColCount - 1; //删除
& SetSGridTitle(SGrid);
procedure TReferContentForm.mmiN9Click(Sender: TObject);
& SGrid: TsuiStringG
& SGrid := TsuiStringGrid(suiPMSGrid.PopupComponent);
& if SGrid && nil then
&&& ClearSGrid(SGrid, 5, 5)
& SetSGridTitle(SGrid);
&// 右击选择单元格
procedure TReferContentForm.suiStringGridContentMouseDown(Sender: TO
& Button: TMouseB Shift: TShiftS X, Y: Integer);
& if (Button = mbRight) then
&&& SendMessage(SGridContent.Handle, WM_LBUTTONDOWN, 0, MAKELONG(x, y));
&&& SendMessage(SGridContent.Handle, WM_LBUTTONUP, 0, MAKELONG(x, y));
procedure TReferContentForm.FormShow(Sender: TObject);
& SetSGridTitle(SGridContent);
// 把标题栏和数字列中是内容,居中显现
procedure TReferContentForm.SGridContentDrawCell(Sender: TO ACol,
& ARow: I Rect: TR State: TGridDrawState);
& if (ACol = 0) or (ARow = 0) then
&&& with TSuiStringGrid(Sender) do
&&&&& Canvas.Brush.Color := $00F0DDCE;
&&&&& Canvas.FillRect(Rect);
&&&&& s := Cells[ACol, ARow];
&&&&& r := R
&&&&& DrawText(Canvas.Handle, PChar(s), Length(s), r, DT_CENTER or DT_SINGLELINE or DT_VCENTER);
本文已收录于以下专栏:
相关文章推荐
最近在编写软件的时候,非常需要一款支持多表头的StringGrid控件,朋友介绍使用EasyGrid控件,这款控件大概从04年开始就没有再更新,网上有关与它的资料也较少。但是通过其demo,此软件还是...
Timer需要修改的属性为interval(间隔)为1000ms;然后修改OnTimer事件
利用定时器可以显示一个时钟;思路就是1s内显示一下时钟;
例如在窗体中添加一个Label,然后再OnTim...
StringGrid组件用于建立显示字符串的网格,与电子表格相似。它可使表格中的字符串和相关对象操作简单化。StringGrid组件提供了许多可控制网格外观念的属性,以及利用表格的结构响应用户操作的事...
常用DELPHI控件属性事件设置说明(第二篇)
 ( 08:48:48)
标签: 
delphi控件属性
他的最新文章
讲师:王哲涵
讲师:韦玮
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)

我要回帖

更多关于 mouse button 的文章

 

随机推荐