想学习呀,问题真是多多.(100分)

  • 主题发起人 小学生_hjz
  • 开始时间

小学生_hjz

Unregistered / Unconfirmed
GUEST, unregistred user!
unit makemap1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, Buttons, StdCtrls, ComCtrls, Menus, ToolWin;
type
TForm1 = class(TForm)
ScrollBox1: TScrollBox;
bild: TPaintBox;
opend: TOpenDialog;
Bar1: TStatusBar;
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
SpeedButton4: TSpeedButton;
SpeedButton5: TSpeedButton;
SpeedButton6: TSpeedButton;
Memo1: TMemo;
ToolBar1: TToolBar;
MainMenu1: TMainMenu;
fire1: TMenuItem;
open1: TMenuItem;
N1: TMenuItem;
Quit1: TMenuItem;
GroupBox1: TGroupBox;
ComboBox1: TComboBox;
N2: TMenuItem;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure bildPaint(Sender: TObject);
procedure ComboBox1Change(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure SpeedButton3Click(Sender: TObject);
procedure bildMouseMove(Sender: TObject;
Shift: TShiftState;
X,
Y: Integer);
procedure bildMouseDown(Sender: TObject;
Button: TMouseButton;
Shift: TShiftState;
X, Y: Integer);
procedure bildMouseUp(Sender: TObject;
Button: TMouseButton;
Shift: TShiftState;
X, Y: Integer);
procedure bildDblClick(Sender: TObject);
procedure FormKeyDown(Sender: TObject;
var Key: Word;
Shift: TShiftState);
procedure showmap2Click(Sender: TObject);
procedure showmap1Click(Sender: TObject);
procedure open1Click(Sender: TObject);
private
{ Private-Deklarationen }
function getzoom : integer;
procedure updatebild;
procedure getimgs;
procedure gettbmp;
procedure settbmp;
procedure addmap(x,y:integer);
function gv (a,x:integer):string;
procedure drawmap(s:string);
function gc (var s : string):integer;
public
{ Public-Deklarationen }
end;

var
Form1: TForm1;
myimg : array [-1..4] of tbitmap;
map : tstrings;
points : tstrings;
mode : integer = 1;
ismode : boolean = false;
oldx,oldy : integer;
pts : array [0..500] of tpoint;
ptix : integer = 0;
allownext : boolean = true;
allowchange : boolean = true;
canchange : boolean = true;
const zoom : array [-1..3] of byte = (1,1,2,4,8);
implementation
{$R *.DFM}
function tform1.gc (var s : string):integer;
var t : integer;
begin
1: result := maxint;

-------------------------------
if length(s) < 2 then
exit;
if s[1] = ',' then
begin
delete(s,1,1);
t := pos(',',s);
if t = 0 then
t := maxint-1;
result := strtointdef(copy(s,1,t-1),maxint)*getzoom;
s := copy(s,t,maxint);
end;
end;

procedure tform1.drawmap(s:string);
var ch : char;
a,b,c,d : integer;
2: tmt : array [0..500] of tpoint;
-------------------------------------
begin
ch := s[1];
delete(s,1,1);
3: with bild.canvasdo
begin
------------------------------------
4: //pen.mode := pmblack;
---------------------------------------
if ch <> 'p' then
begin
a := gc(s);
b := gc(s);
c := gc(s);
d := gc(s);
end;
case ch of
5 : 'c' : ellipse(a,b,c,(c-a)+b);
------------------------------------------------
'p' : begin
a := 0;
b := gc(s);
while b < maxint-1do
begin
tmt[a].x := b;
tmt[a].y := gc(s);
inc(a);
b:=gc(s);
end;
6: polygon(slice(tmt,a-1));
-------------------------------------------------------
end;
7: 'r' : rectangle(a,b,c,d);
--------------------------------------------
end;
end;
end;
1.处的result与 maxint前面没有说明不知道是什么.
2.处的tpoint不知道是什么类型.
3处的bild.canvas不知道为什么这么用,换成bild可以么.
4.处的语句是什么意思呀
5.6.7处的字符不是程序中的函数不知道是什么.
 
X

[xiaopei]

Unregistered / Unconfirmed
GUEST, unregistred user!
1、maxint是一个const常数,这个常数代表着一个Integer类型所能容纳的最大整数大小。
2、tpoint是一个windows单元中定义的结构体。原形如下:
TPoint = packed record
X: Longint;
Y: Longint;
end;
3、bild.canvas为什么这样用,建议你看一下Object pascal语言参考手册的with语句就明白了。
4、'//'是Delphi的注释符号,'//'这个符号后面的一行都属于注释语句,这一行的语句不论是什么都会被Delphi当行是注释,不会被编译到程序中去,详细的你去看Object pascal语言参考手册。
5、6、7处的字符是case语句作为顺序号判断用的,字符后面的函数是bild.canvas后的过程函数,因为在3处用了with bild.canvasdo
语句标名后面调用的函数都是属于bild.canvas的函数了。现在你明白了3的作用了吧,如果不用3的语句,那后面调用的函数就要写成bild.canvas.ellipse(a,b,c,(c-a)+b);这样调用才行,书写代码就比较多了。
 
X

[xiaopei]

Unregistered / Unconfirmed
GUEST, unregistred user!
最后,推荐你到网上找一本Object Pascal语言参考中英文(可打印版)和Object Pascal精要这两本电子看看,你所问的问题这两个电子书都有详细的解释。
 

风清杨

Unregistered / Unconfirmed
GUEST, unregistred user!
你还得好好学习...
 

小学生_hjz

Unregistered / Unconfirmed
GUEST, unregistred user!
多人接受答案了。
 

小学生_hjz

Unregistered / Unconfirmed
GUEST, unregistred user!
感谢[xiaopei]回答我的问题但是我还是有点不明白:
1,你说“maxint是一个const常数,这个常数代表着一个Integer类型所能容纳的最大整数大小”可是我在函数说明部分没有看到关于maxint的常量说明。请问maxint是delphi中固定的常量保留字么?还有result这个字符是什么意思。
2,我知道当with后面的语句为真时执行循环体,我想知道如果把bild.canvas换成bild是否可以。
3,你说5.6.7处的函数都属于bild.canvas的函数,可在程序中没有给出函数体在[delphi函数参考大全]中我也没有找到这3个函数。请再次解释。
还有如果方便的话加我的qq吧734716287
 

Similar threads

I
回复
0
查看
498
import
I
I
回复
0
查看
645
import
I
I
回复
0
查看
544
import
I
I
回复
0
查看
570
import
I
顶部