Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π‘ΠΎΠ²Π΅Ρ‚Ρ‹ ΠΏΠΎ Delphi. ВСрсия 1.4.3 ΠΎΡ‚ 1.1.2001Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 66

Автор Π’Π°Π»Π΅Π½Ρ‚ΠΈΠ½ ΠžΠ·Π΅Ρ€ΠΎΠ²

procedure TForm1.Edit1Click(Sender: TObject);

begin

 edit1.text := (sender as TButton).caption;

end;

ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Π°Ρ Π½ΠΈΠΆΠ΅ конструкция Π±ΡƒΠ΄Π΅Ρ‚ нСдостаточной:

sender.caption

ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ компилятор Π½Π΅ Π·Π½Π°Π΅Ρ‚ ΠΎ Ρ‚ΠΎΠΌ, ΠΈΠΌΠ΅Π΅Ρ‚ Π»ΠΈ Β«senderΒ» свойство caption, ΠΈΠ»ΠΈ Π½Π΅Ρ‚. 

CheckBox 

Массив ΠΈΠ· CheckBox – использованиС раздСляСмого ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° события I

Delphi 1 

ΠŸΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚Π΅ нСсколько Checkbox Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ TGroupBox. Π’ΠΎ врСмя ΠΏΡ€ΠΎΠ³ΠΎΠ½Π° (ΠΈΠ»ΠΈ проСктирования) Π½Π°Π·Π½Π°Ρ‡ΡŒΡ‚Π΅ ΠΎΠ±Ρ‰ΠΈΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ события Click для всСх checkbox'Π². Π§Ρ‚ΠΎΠ±Ρ‹ Π² Ρ†ΠΈΠΊΠ»Π΅ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ всС Β«Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅Β» TCheckBox'Ρ‹, ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ свойством-массивом Controls TGroupBox (ΠΈ Π·Π°ΠΎΠ΄Π½ΠΎ привСсти ΠΈΡ… ΠΊ Ρ‚ΠΈΠΏΡƒ TCheckBox). ΠŸΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‚Π°ΠΊ:

for i := 0 to GroupBox1.ControlCount -1 do


 if  (GroupBox1.Controls[i] as TCheckBox).checked then

  {Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Ρ‚Π°ΠΌ Π΅Ρ‰Π΅};

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ имя sender ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

procedure TMain1.CheckBoxClick(Sender: TObject);

var whodidit: string[63];

begin

 whodidit := TComponent(sender).name;

end;

ПослС привСдСния Ρ‚ΠΈΠΏΠ° ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ ΠΈ Π΄ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΡ… свойств. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ свойство Tag. Π’ΠΎ врСмя создания, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ checkbox.tag свой ID Π½ΠΎΠΌΠ΅Ρ€. А Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ΅ события, читая ID, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ sender. 

Массив ΠΈΠ· CheckBox – использованиС раздСляСмого ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° события II

Delphi 1

var

 CheckArray: array[1..x] of TCheckBox;

 i:integer;

begin

 for i:=1 to x do begin

  CheckArray[i]:=TCheckBox.Create(Form1);

  {УстанавливаСм свойства}

  with CheckBox[i] do begin

   Left:=i*20;

   Width:=15;

   другоС…

  end;

 end;

ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ:

Check[i].OnClick:=xyz.

Пока я ΠΈ сам Π½Π΅ знаю ΠΊΠ°ΠΊ ΠΏΠΎΡΡ‚ΡƒΠΏΠΈΡ‚ΡŒ. ДинамичСскоС созданиС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Π΄Π°, Π½ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ событий?

БущСствуСт способ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ массива checkbox'ΠΎΠ² с раздСляСмым ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠΌ события. РасполоТитС ΠΈΡ… Π½Π° Ρ„ΠΎΡ€ΠΌΠ΅ ΠΈ Π΄Π°ΠΉΡ‚Π΅ ΠΈΠΌ Β«Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½Ρ‹Π΅Β» ΠΈΠΌΠ΅Π½Π° (Check1, Check2 ΠΈ Ρ‚.Π΄.). Π—Π°Ρ‚Π΅ΠΌ установитС Ρƒ Π½ΠΈΡ… ΠΎΠ±Ρ‰ΠΈΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ события. ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ события ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ:

procedure TForm.Check1Click(Sender : TObject);

var i : Integer;

begin

 for i := 1 to 10 { ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΈΠΌΠ΅Π΅ΠΌ 10 checkbox'ΠΎΠ² } do

  With TCheckBox(FindComponent('Check'+IntToStr(i))) do begin

  { Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΊΠΎΠ΄ }

 end;

end;

Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ CheckBox'ΠΎΠ²

Delphi 3

Π’ Ρ€Π΅ΠΆΠΈΠΌΠ΅ проСктирования Π²Ρ‹, ΠΊΠ°ΠΊ программист, Π±Π΅Π· Ρ‚Ρ€ΡƒΠ΄Π° ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, сколько checkbox'ΠΎΠ² содСрТит ваша Ρ„ΠΎΡ€ΠΌΠ°. А Π²ΠΎΡ‚ ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ запущСно… Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Delphi Run Time Type Information (RTTI). Для нашСй испытуСмой Ρ„ΠΎΡ€ΠΌΡ‹ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

var i : Integer

begin

 for i := 0 to ComponentCount - 1 do

  if Components[i] is TCheckBox then

  (Components[i] as TCheckBox).Checked then begin

  ... сюда помСститС ваш ΠΊΠΎΠ΄ ...

 end;

end;

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ Delphi Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π΅Π½:

if Components[i] = CheckBox5 then Π§Ρ‚ΠΎΡ‚ΠΎΠ΄Π΅Π»Π°Π΅ΠΌ;

Π’Π°ΠΊΠΆΠ΅, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Π² Delphi ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½ΠΎΠ΅ (Published) свойство с ΠΈΠΌΠ΅Π½Π΅ΠΌ 'Tag', Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ Π²ΠΎ врСмя создания ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°, ΠΈ Π·Π°Ρ‚Π΅ΠΌ, Π²ΠΎ врСмя выполнСния прилоТСния, ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ Π½Π΅ΠΌΡƒ для получСния доступа ΠΊ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρƒ:

var i : Integer

begin

 for i := 0 to ComponentCount - 1 do

  if Components[i] is TCheckBox then

  with (Components[i] as TCheckBox) do

  Case Tag of

  1 : if Checked then DoSomethingOnBox1;

  2 : if Checked then DoSomethingOnBox2;

  … Π΄Ρ€ΡƒΠ³ΠΎΠ΅ …

 end;

end;

Для получСния Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ΡΡŒ ΠΊ справкС Delphi с ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ словом Β«ComponentCountΒ».

BitBtn 

Кнопка с нСсколькими строчками тСкста III

Π’ΠΎΡ‚ ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΡΠΎΠ·Π΄Π°ΡŽΡ‰Π΅Π³ΠΎ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ΅ Π²ΠΎ врСмя выполнСния Π΄Π²Π΅ строчки тСкста.

program TwolnBtn;

uses Forms,TwolnBtu in 'TWOLNBTU.PAS' {Form1};

{$R *.RES}

begin

 Application.CreateForm(TForm1, Form1);

 Application.Run;

end.

Π€Π°ΠΉΠ» TWOLNBTU.TXT β†’ TWOLNBTU.DFM

object Form1: TForm1

 Left = 202

 Top = 98

 Width = 320

 Height = 176

 Caption = 'Form1'

 Font.Color = clRed

 Font.Height = -12

 Font.Name = 'Arial'

 Font.Style = [fsBold]

 PixelsPerInch = 96

 OnActivate = ChgSpeedButton

 OnCreate = ChgBitBtn

 TextHeight = 15

 object SpeedButton1: TSpeedButton

  Left = 144

  Top = 24

  Width = 65

  Height = 45

  Caption = 'Π­Ρ‚ΠΎ двустрочный Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ'

  OnClick = ChgSpeedButton

 end

 object

 BitBtn1: TBitBtn

  Left = 32

  Top = 24

  Width = 69

  Height = 37

  Caption = 'ΠŸΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹'

  TabOrder = 0

  OnClick = BitBtn1Click

 end

end

Π€Π°ΠΉΠ» TWOLNBTU.PAS

unit Twolnbtu;

interface



uses SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons;


type TForm1 = class(TForm)

 BitBtn1: TBitBtn;

 SpeedButton1: TSpeedButton;

 procedure ChgBitBtn(Sender: TObject);

 procedure ChgSpeedButton(Sender: TObject);

 procedure BitBtn1Click(Sender: TObject);

private

 { Private declarations }

public

 { Public declarations }

end;


var Form1: TForm1;


implementation


{$R *.DFM}


procedure TForm1.ChgBitBtn(Sender: TObject);

VAR

R : TRect;

 N : Integer;

 Buff : ARRAY[0..255] OF Char;

BEGIN

 WITH BitBtn1 DO BEGIN

  Glyph.Canvas.Font := Self.Font;

  Glyph.Width  := Width-6;

  Glyph.Height := Height-6;

  R := Bounds(0,0,Glyph.Width,0);

  StrPCopy(Buff, Caption);

  Caption := '';

  DrawText(Glyph.Canvas.Handle, Buff, StrLen(Buff), R, DT_CENTER OR DT_WORDBREAK OR DT_CALCRECT);

  OffsetRect(R, (Glyph.Width-R.Right) DIV 2, (Glyph.Height - R.Bottom) DIV 2);

  DrawText(Glyph.Canvas.Handle, Buff, StrLen(Buff), R, DT_CENTER OR DT_WORDBREAK);

 END;

END;


procedure TForm1.ChgSpeedButton(Sender: TObject);

VAR

R : TRect;

 N : Integer;

 Buff : ARRAY[0..255] OF Char;

BEGIN

 WITH SpeedButton1 DO BEGIN

  Glyph.Canvas.Font := Self.Font;

  Glyph.Width  := Width-6;

  Glyph.Height := Height-6;

  R := Bounds(0,0,Glyph.Width,0);

  StrPCopy(Buff, Caption);

  Caption := '';

  DrawText(Glyph.Canvas.Handle, Buff, StrLen(Buff), R,DT_CENTER OR DT_WORDBREAK OR DT_CALCRECT);

  OffsetRect(R, (Glyph.Width-R.Right) DIV 2, (Glyph.Height - R.Bottom) DIV 2);

  DrawText(Glyph.Canvas.Handle, Buff, StrLen(Buff), R,DT_CENTER OR DT_WORDBREAK);

 END;

END;


procedure TForm1.BitBtn1Click(Sender: TObject);

begin

 Close;

end;

end.

-Dennis Passmore

ComboBox 

Π₯ΠΎΡ‡Ρƒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Π²Ρ‹ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ» (combo). Как это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ?

Nomadic ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚:

Когда-Ρ‚ΠΎ ΠΏΠΎΡ‚Ρ€Π°Ρ‚ΠΈΠ» Π½Π΅ΠΌΠ°Π»ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π° Ρ€Π°Π·Π±ΠΎΡ€, ΠΊΠ°ΠΊ ΠΆΠ΅ всС Ρ‚Π°ΠΊΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π΄Ρ€ΠΎΠΏΠ΄Π°ΡƒΠ½-ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Ρ‹. Π’ ΠΈΡ‚ΠΎΠ³Π΅ ΠΌΠ½ΠΎΠΉ Π±Ρ‹Π» написан малСнький ΡŽΠ½ΠΈΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ я ΠΏΠΎΠ»ΠΎΠΆΠΈΠ» Ρƒ сСбя Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ Demo для ознакомлСния ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‰ΠΈΡ…ΡΡ. Он малСнький (Π΅Π³ΠΎ основная Π·Π°Π΄Π°Ρ‡Π° β€” ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Ρ€Π°Π±ΠΎΡ‚Ρ‹, Π° всС ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅ β€” ΠΊΠ°ΠΊ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΡˆΡŒ), я Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Ρƒ ΠΎΠ½ ΠΏΡ€ΠΈΠ³ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ, поэтому ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΡŽ здСсь. ΠšΠ°ΡΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‚Π²ΠΎΠ΅Π³ΠΎ вопроса - Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠΉ вмСсто листбокса Π²Ρ‹ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ даст Ρ‚Π΅Π±Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π΄Π΅Ρ€Π΅Π²Π°.

unit edit1;