1、我的程序有4个Form,其中Form1是主窗体,调用Form2、Form3、Form4,现在若有一个变量K,希望能在这4个Form里都能访问,K能被4个Form共享,那么K该如何定义?在什么地方定义?我在Form1的头文件里定义,然后在其它Form的cpp文件里包含Form1的头文件,为何编译还是出错,说变量没有定义?
2、当我在控件的Canvas上绘图时,因为默认的基点是控件的左上角为,所以画出来的图形在进行放大、缩小时都是以左上角的基点进行的,很不好看,但是我不知道怎样才能实现以中心为基点,实现图形的中心放大、缩小?能否给个例子?
请大家指教,谢谢!
新建一个quanju.h文件
在这个文件里定义K,
然后在每个form里include quanju.j就行了
1基本同意gw505(★啊中)但要注意使用extern关键字。
对,定义一个公共单元得了。然后每个表单头文件都include这个公共单元就行了,将公共变量都放到公共单元里。省的麻烦。
设中心坐标,画布位置Left,;
放大或缩小后调整:Left=X-Width/2; =Y-Height/2;
定义的变量放在Private和Public的外面就行!
我就是这样定义全局变量的
新建一个头文件
extern int i;
第二个问题,用API函数:
SetViewportOrgEx(Canvas->Handle, ClientWidth/2, ClientHeight/2, NULL);
在任意一个FORM的头文件中的PUBLIC区定义,然后在引用它的FORM中
加上#INCLUDE FORM1.h即可。
这是OO时代标准用法,反对extern之类的传统结构化编程时代的用法!
1、应该在一个.cpp 文件中先定义一下变量:
int K;
然后在一个.h文件中这样:
extern int K;
你的程序出问题可能是在.cpp文件中没有定义的原因。
2、比如你放大n倍,原来有一条线从(x1,y1)到(x2,y2)可以这样:
Image1->Canvas->MoveTo((x1-Image1->Width/2)*n,(y1-Image1->Height/2)*n);
Image1->Canvas->LineTo((x2-Image1->Width/2)*n,(y2-Image1->Height/2)*n);
画其它图像也可以这样换算坐标
关于公用变量:
我常用两个方法:
1、定义一个公用的类:
unit1.h
class TPublic : public TObject
{
public:
//定义你的变量
int i;
}
在其他的地方#include" unit1.h"
Public->i访问
2、新建一个public.cpp
int i;
AnsiString str;
public.h中
extern int i;
extern AnsiString str;
在其他的cpp文件中#include "public.h"
就可以访问i、str了!