| 
| 
 | Вопрос # 4 299/ вопрос открыт / | 
 |  Доброго времени суток, уважаемые эксперты!
 Прокоментируйте пожалуйста, за что отвечает каждая процедура следующей программы, хочу сделать подобие, буду очень признателен!!!!!!
 К вопросу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки вопроса) 
|  |   Вопрос задал: HEJY (статус: Посетитель)Вопрос отправлен: 8 июня 2010, 15:26
 Состояние вопроса: открыт, ответов: 1.
 |  Ответ #1. Отвечает эксперт: min@y™ Откомментировал.Не знаю, поможет это тебе или нет.
 Приложение:Переключить в обычный режим unit Unit1; interface uses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs, ExtCtrls, Menus, ComCtrls, Buttons, StdCtrls, ExtDlgs; type    TToolType=(ttline, ttrect, ttellipse, ttroundrect, ttspray, ttpen);    TForm1 = class(TForm)    MainMenu1: TMainMenu;    Panel1: TPanel;    ScrollBox1: TScrollBox;    StatusBar1: TStatusBar;    N1: TMenuItem;    N2: TMenuItem;    N3: TMenuItem;    N5: TMenuItem;    N6: TMenuItem;    Image1: TImage;    SpeedButton1: TSpeedButton;    SpeedButton4: TSpeedButton;    SpeedButton7: TSpeedButton;    SpeedButton2: TSpeedButton;    SpeedButton5: TSpeedButton;    SpeedButton6: TSpeedButton;    OpenPictureDialog1: TOpenPictureDialog;     ColorDialog1: TColorDialog;    SpeedButton8: TSpeedButton;    SpeedButton9: TSpeedButton;    Label1: TLabel;     procedure SpeedButton1Click(Sender: TObject);    procedure N6Click(Sender: TObject);    procedure N3Click(Sender: TObject);     procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;      Shift: TShiftState; X, Y: Integer);    procedure Image1MouseUp(Sender: TObject; Button: TMouseButton;      Shift: TShiftState; X, Y: Integer);    procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,      Y: Integer);    procedure SpeedButton2Click(Sender: TObject);    procedure SpeedButton5Click(Sender: TObject);    procedure SpeedButton4Click(Sender: TObject);    procedure SpeedButton6Click(Sender: TObject);     procedure N2Click(Sender: TObject);    procedure SpeedButton8Click(Sender: TObject);       procedure SpeedButton7Click(Sender: TObject);    private    { Private declarations }  public    { Public declarations }    PenWide: Integer;    Drawing: Boolean;    mousepos1, mousepos2: TPoint;    activeTool: TToolType;    procedure DrawShape(TopLeft, BottomRight: TPoint; AMode: TPenMode);  end; var  Form1: TForm1; implementation {$R *.dfm}   procedure TForm1.SpeedButton1Click(Sender: TObject);beginlabel1.Visible:=true;speedbutton9.Visible:=false;speedbutton8.Visible:=true;activetool:= ttpen; end;  procedure TForm1.N6Click(Sender: TObject);beginclose;end;  procedure TForm1.N3Click(Sender: TObject);beginif openpicturedialog1.Execute thenimage1.Picture.LoadFromFile(openpicturedialog1.FileName);end;     procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;  Shift: TShiftState; X, Y: Integer);beginDrawing:=true;mousepos1:=point(x,y);mousepos2:=mousepos1; image1.Canvas.MoveTo(x,y);end;  procedure TForm1.DrawShape(TopLeft, BottomRight: TPoint; AMode: TPenMode);vari:integer;begin  with Image1.Canvas do  begin    Pen.Mode := AMode;    case activeTool of         begin          image1.Canvas.Pen.Width:=40;          Image1.Canvas.LineTo(BottomRight.X, BottomRight.Y);        end;         begin          Image1.Canvas.MoveTo(TopLeft.X, TopLeft.Y);          Image1.Canvas.LineTo(BottomRight.X, BottomRight.Y);        end;         begin          image1.Canvas.Brush.Style:=bsclear;          Image1.Canvas.Rectangle(TopLeft.X, TopLeft.Y, BottomRight.X,BottomRight.Y);        end;         begin          image1.Canvas.Brush.Style:=bsclear;          Image1.Canvas.Ellipse(Topleft.X, TopLeft.Y, BottomRight.X, BottomRight.Y);        end;         begin          image1.Canvas.Brush.Style:=bsclear;          Image1.Canvas.RoundRect(TopLeft.X, TopLeft.Y, BottomRight.X, BottomRight.Y, (TopLeft.X -
BottomRight.X) div 2, (TopLeft.Y - BottomRight.Y) div 2);        end;           randomize;    image1.Canvas.Pixels[topleft.x+random(image1.Canvas.Pen.Width),
topleft.y+random(image1.Canvas.Pen.Width)]:=image1.Canvas.Pen.Color;    image1.Canvas.Pixels[bottomright.x+random(image1.Canvas.Pen.Width),
bottomright.y+random(image1.Canvas.Pen.Width)]:=image1.Canvas.Pen.Color;          end;        end;    end; end;    procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;  Shift: TShiftState; X, Y: Integer);begin  if Drawing then  begin    DrawShape(mousepos1, Point(X, Y), pmCopy);    Drawing := False;  end;end;      procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,  Y: Integer);begin  if Drawing then  begin    DrawShape(mousepos1, mousepos2, pmNotXor);    mousepos2 := Point(X, Y);    DrawShape(mousepos1, mousepos2, pmNotXor);  end;  StatusBar1.Panels[0].Text := Format('X=%d, Y=%d', [X, Y]);end;  procedure TForm1.SpeedButton2Click(Sender: TObject);begin  label1.Visible:=true;  speedbutton9.Visible:=false;  speedbutton8.Visible:=true;  activetool:= ttline; end;  procedure TForm1.SpeedButton5Click(Sender: TObject);beginlabel1.Visible:=true;speedbutton9.Visible:=false;speedbutton8.Visible:=true;activetool:=ttellipse; end;  procedure TForm1.SpeedButton4Click(Sender: TObject);beginlabel1.Visible:=true;speedbutton9.Visible:=false;speedbutton8.Visible:=true;activetool:=ttrect; end;  procedure TForm1.SpeedButton6Click(Sender: TObject);beginlabel1.Visible:=true;speedbutton9.Visible:=false;speedbutton8.Visible:=true;activetool:=ttroundrect; end;  procedure TForm1.N2Click(Sender: TObject);  var  Bitmap: TBitmap;begin  Bitmap := nil;  try     Bitmap.Width := 800;    Bitmap.Height := 800;    Image1.Picture.Graphic := Bitmap;  finally    Bitmap.Free;  end;end;  procedure TForm1.SpeedButton8Click(Sender: TObject);beginif colordialog1.Execute then image1.Canvas.Pen.Color:=colordialog1.Color; speedbutton8.Glyph:=tbitmap.create; speedbutton8.Glyph.Width:=speedbutton8.Width; speedbutton8.Glyph.Height:=speedbutton8.Height; speedbutton8.Glyph.Canvas.Brush.Color:=colordialog1.Color; speedbutton8.Caption:=''; speedbutton8.Glyph.Canvas.Rectangle(2,2,speedbutton8.Width-6,speedbutton8.Height-6);end;  procedure TForm1.SpeedButton7Click(Sender: TObject);begin  label1.Visible:=true;  speedbutton9.Visible:=false;  speedbutton8.Visible:=true;  activetool:=ttspray;end; end.
|  | Ответ отправил: min@y™ (статус: Доктор наук)Время отправки: 8 июня 2010, 15:57
 Оценка за ответ: 4
 Комментарий к оценке: Спасибо, почти все понятно)))) |  
 Мини-форум вопросаВсего сообщений: 10; последнее сообщение — 8 июня 2010, 22:34; участников в обсуждении: 2. 
|   | min@y™ (статус: Доктор наук), 8 июня 2010, 16:25 [#1]:А чо 4? Я что-то неправильно написал?
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | IlluminatI (статус: 2-ой класс), 8 июня 2010, 20:01 [#2]:to min@y™: 
 Bitmap := TBitmap.Create; // неправильный подход, возможны утечки памяти а какой правильный? просто интересно стало. всегда так создавал битмапы о_О
 |  
|   | min@y™ (статус: Доктор наук), 8 июня 2010, 20:36 [#3]: Цитата (IlluminatI): а какой правильный? просто интересно стало. всегда так создавал битмапы о_О  Правильно так:
 
 MyClass:= TMyClass.Create(...);
try
  // Работа с экземпляром
finally
  MyClass.Free(); // Или FreeAndNil(MyClass);
end;Надо объяснять, почему или сам догадаешься? Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | IlluminatI (статус: 2-ой класс), 8 июня 2010, 20:42 [#4]:Внутри try нельзя создавать? |  
|   | min@y™ (статус: Доктор наук), 8 июня 2010, 20:46 [#5]: Цитата (IlluminatI): Внутри try нельзя создавать?  Не советую.
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | IlluminatI (статус: 2-ой класс), 8 июня 2010, 20:47 [#6]:Почему? Объясни   |  
|   | min@y™ (статус: Доктор наук), 8 июня 2010, 20:56 [#7]: Цитата (IlluminatI): Почему? Объясни   Вот тебе ссылка. Пройди тест и посмотри потом на результаты и трактовку правильных ответов. Обрати внимание на 5-й вопрос.
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | IlluminatI (статус: 2-ой класс), 8 июня 2010, 21:13 [#8]:Спасибо. Хорошая вещь |  
|   | min@y™ (статус: Доктор наук), 8 июня 2010, 21:42 [#9]: Цитата (IlluminatI): Спасибо. Хорошая вещь  min@y™ никогда гамна не посоветует. Ему просто лень гнать порожняк, поверь!
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | IlluminatI (статус: 2-ой класс), 8 июня 2010, 22:34 [#10]:Поверю =) |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |