Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.05.2009, 13:50   #11
DeepPurple
 
Регистрация: 18.05.2009
Сообщений: 9
По умолчанию

мб я чтото не так делаю но при таком запросе все равно абстракт эррор.

заработала вот такая версия. тока тут пару лишних процедур.
Код:
unit MainForm;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, Grids, DBGrids, DBTables, StdCtrls, ExtCtrls, DBCtrls,
  DBXpress, FMTBcd, SqlExpr, DBClient, Provider, ADODB, Mask;

const
  WM_CLICKBN=WM_USER+1;
type
  TButtonArray=packed array of TButton;
  TCheckBoxArray=packed array of TCheckBox;
  TEditArray=packed array of TEdit;
  TfmMain = class(TForm)
    DataSource1: TDataSource;
    ADOConnection1: TADOConnection;
    ADODataSet1: TADODataSet;
    ADOCommand1: TADOCommand;
    ADODataSet1NAME: TStringField;
    GroupBox1: TGroupBox;
    ScrollBox1: TScrollBox;
    Button1: TButton;
    DBGrid1: TDBGrid;
    Button2: TButton;
    Button3: TButton;
    RadioGroup1: TRadioGroup;
    DBEdit1: TDBEdit;
    DBEdit2: TDBEdit;
    DBCheckBox1: TDBCheckBox;
    Label1: TLabel;
    Label2: TLabel;
    ButtonAdd: TButton;
    GroupBox2: TGroupBox;
    GroupBox3: TGroupBox;
    DBEdit3: TDBEdit;

    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure RadioGroup1Click(Sender: TObject);

    { Private declarations }
  public
  procedure ButtonClick(Sender: TObject);
  procedure WMCLICKBN(var M: TMessage); message WM_CLICKBN;


  end;


var
  fmMain: TfmMain;
  BA: TButtonArray;
  CB: TCheckBoxArray;
  ED: TEditArray;

implementation

{$R *.dfm}

procedure TfmMain.ButtonClick(Sender: TObject);
var i,k,l,z,q,w,e,r:integer;
begin
 for i := 0 to High(CB) do
   if CB[i].Tag = (Sender as TButton).Tag then
   begin
    z:=i;
     CB[i].Destroy;
   end;
      for k := z to high(CB) do
      CB[k]:=CB[k+1]  ;

   if z < high(CB)  then
    begin
      for l := z to high(CB)-1 do
        begin
          CB[l].Top:=CB[l].Top-32;
        end;

    end;

 for q := 0 to High(ED) do
   if ED[q].Tag = (Sender as TButton).Tag then
   begin
    r:=q;
     ED[q].Destroy;
   end;
      for w := r to high(ED) do
      ED[w]:=ED[w+1]  ;

   if r < high(ED)  then
    begin
      for e := r to high(ED)-1 do
        begin
          ED[e].Top:=ED[e].Top-32;
        end;

    end;

  SetLength(ED,Length(ED)-1);
  SetLength(CB,Length(CB)-1);
  PostMessage(fmMain.Handle,WM_CLICKBN,Integer(Sender),0);


end;




procedure TfmMain.FormCreate(Sender: TObject);
begin
ADOConnection1.Open;
   ADODataSet1.Open;
dbEdit1.Text:='';
dbEdit2.Text:='';

end;





procedure TfmMain.Button1Click(Sender: TObject);
var
  i: Integer;
begin

    SetLength(BA,Length(BA)+1);
    BA[High(BA)] := TButton.Create(nil);
    BA[High(BA)].OnClick := ButtonClick;
    BA[High(BA)].Width := 25;
    BA[High(BA)].Height :=20;
    BA[High(BA)].Left := 270;
    BA[High(BA)].Top := 20+(High(BA)*32);
    BA[High(BA)].Caption := 'del';
    BA[High(BA)].Parent := ScrollBox1;
    BA[High(BA)].Visible := True;
    BA[High(BA)].Tag :=High(BA);

    SetLength(CB,Length(CB)+1);
    CB[High(CB)] := TCheckBox.Create(nil);
    CB[High(CB)].Left := 20;
    CB[High(CB)].Top := 20+(High(CB)*32);
    CB[High(CB)].Parent := ScrollBox1;
    CB[High(CB)].Visible := True;
    CB[High(CB)].Tag :=High(BA);

    SetLength(ED,Length(ED)+1);
    ED[High(ED)] := TEdit.Create(nil);
    ED[High(ED)].Width := 200;
    ED[High(ED)].Height :=25;
    ED[High(ED)].Left := 50;
    ED[High(ED)].Top := 20+(High(ED)*32);
    ED[High(ED)].Text:='';
    ED[High(ED)].Parent := ScrollBox1;
    ED[High(ED)].Visible := True;
    ED[High(ED)].Tag :=High(BA);

end;

procedure TfmMain.WMCLICKBN(var M: TMessage);
var
  bn: TButton; cc:TCheckBox;
  i,l,z: Integer;
begin
  bn := TButton(M.WParam);
  if not (bn is TButton) then Exit;
  for i := 0 to High(BA)-1 do
  begin
    if BA[i]=bn then
    begin
      z:=i;
      Move(BA[i+1],BA[i],SizeOf(TButton)*(High(BA)-i));
      Break;
    end;
  end;
  if z<High(BA) then
  begin
      for l := z to high(BA)-1 do
        begin
          BA[l].Top:=BA[l].Top-32;
        end;
  end;

  SetLength(BA,High(BA));
  FreeAndNil(bn);



end;
DeepPurple вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вызвать процедуру нажатия кнопки Rusl92 Общие вопросы Delphi 1 23.11.2008 13:13
Как создать обратную функцию, которая из уникального номера будет возвращать строку? SkAndrew Общие вопросы Delphi 8 06.04.2008 21:10
Составить процедуру, которая в задоном массиве С заменяет элементы Absent Помощь студентам 1 25.03.2008 23:11
Как создать процедуру и функцию? Absent Общие вопросы Delphi 1 18.11.2007 17:36