Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 22.08.2011, 10:37
Ankor Ankor вне форума
Новичок
 
Регистрация: 19.08.2011
Сообщения: 68
Версия Delphi: XE2, XE3
Репутация: 10
По умолчанию Хранение данных в файле

Здравствуйте.
Подскажите пожалуйста на нижеприведённом коде:
У меня сделана сетка (30х20) ячеек.
Как сделать, чтобы данные (целые числа) для каждой ячейки хранились в текстовом файле через двоеточие, и при клике на определённую ячейку они выводились в Label?
Если в файле записано число 0, то картинка перемещаться не должна.

Код:
Код:
unit grid_;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ExtCtrls, jpeg, pngimage;

type
  TForm1 = class(TForm)
    PaintBox1: TPaintBox;
    Image1: TImage;
    Button1: TButton;
    CheckBox1: TCheckBox;
    Image2: TImage;
    Image3: TImage;

procedure PaintBox1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);

    procedure PaintBox1Paint(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  M: Array [1..600] of Array [1..600] of Byte;

  Form1: TForm1;
  x0,y0:integer;
 dx,dy:integer;
 h,w:integer;
 x,y:integer;

 lx,ly:real;
 dlx,dly:real;
 cross:integer;
 dcross:integer;
 i,j: Integer;
 implementation

{$R *.DFM}

Procedure UstSob;
Var
 i,j,z1: Integer;
begin
 For i:= 1 To 600 Do
  For j:= 1 To 600 Do M[i,j]:= 0; // Обнулим все ячейки
 M[1,1]:= $1;
 M[30,20]:=$2;

end;

procedure TForm1.PaintBox1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var h1: integer;
  Const
 a = 33;
 b = 20;

begin
UstSob;
// ShowMessage('Ячейка = ['+IntToStr((X div a)+1)+', '+IntToStr((Y div b)+1)+']');

Image2.Left:= a*(X div a);Image2.Top:= b*(Y div b)+111;
 if M[(X div a)+1,(Y div b)+1] = $1 Then begin Image3.Left:= a*(X div a);Image3.Top:= b*(Y div b)+111;end;
 if M[(X div a)+1,(Y div b)+1] = $2 Then begin Image3.Left:= a*(X div a);Image3.Top:= b*(Y div b)+111;end;

 end;

 procedure TForm1.PaintBox1Paint(Sender: TObject);
begin
 x0:=0; y0:=400;
 dx:=33; dy:=20;
 dcross:=1;
 dlx:=1;
 dly:=1.0;
 h:=400;
 w:=991;

with PaintBox1.Canvas do
 begin
 cross:=dcross;
 Pen.Color:=clMaroon;
   MoveTo(x0,y0); LineTo(x0,y0-h);
   MoveTo(x0,y0); LineTo(x0+w,y0);
   x:=x0+dx;
   lx:=dlx;
   repeat
   cross:=cross-1;
     if cross = 0 then
     begin
     cross:=dcross;
     end;
     Pen.Style:=psSolid;
     MoveTo(x,y0);LineTo(x,y0-h);
     Pen.Style:=psSolid;
     lx:=lx+dlx;
     x:=x+dx;
   until (x>x0+w);
   y:=y0-dy;
   ly:=dly;
   repeat
     Pen.Style:=psSolid;
     Pen.Color:=clMaroon;
     MoveTo(x0,y); LineTo(x0+w,y);
     Pen.Style:=psSolid;
     y:=y-dy;
     ly:=ly+dly;
   until (y<y0-h);
  end;
end;

end.
Вложения
Тип файла: rar Сетка.rar (10.2 Кбайт, 1 просмотров)

Последний раз редактировалось Ankor, 22.08.2011 в 11:07.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 09:12.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter