Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Кнопки, помогите создать кнопки 
V
    Опции темы
OIL
  Дата 5.2.2008, 16:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 5.2.2008

Репутация: нет
Всего: нет



Как создать в программе множество кнопок( как в сапере)
PM MAIL   Вверх
Christoph
Дата 5.2.2008, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 667
Регистрация: 23.1.2008
Где: Харьков

Репутация: 5
Всего: 11



Сделай размер кнопок минимальные  smile 


--------------------
user posted image
PM MAIL ICQ   Вверх
pukin
Дата 5.2.2008, 17:53 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 6.9.2007
Где: Россия. Москва/Ко ролёв

Репутация: нет
Всего: нет



Цитата(OIL @ 5.2.2008,  16:05)
Как создать в программе множество кнопок( как в сапере)

Создай приложение, помести на него компонент TSpeedButton (Желательно, помести его куда-нибудь в правый угол. Потом поймёшь почему), дважды нажми на него, чтобы создать обработчик события кнопки OnClick и измени его код, чтобы он выглядил вот так:

 smile 

Код

procedure TForm1.btn1Click(Sender: TObject);
var
  cX,cY : Integer;
  i     : Integer;
  But   : TSpeedButton;
  lTop  : Integer;
  lLeft : Integer;
begin
  lTop  := 2;
  lLeft := 2;
  for cX:=0 to 3 do
     begin
       for cY:=0 to 3 do
          begin
            But := TSpeedButton.Create(Form1);
            with But do
               begin
                 Parent   := Form1;
                 Visible  := TRUE;
                 Height   := 20;
                 Width    := 20;
                 Top      := lTop;
                 Left     := lLeft; lLeft := Left + Width  + 1;
               end;
          end;
       lTop  := lTop  + 20 + 1;
       lLeft := 2;
     end;
end;


Приношу извинения, за столь смешной совет, но на глупые вопросы обычно сразу лезут глупые ответы.  smile 

А, вообще, создавай массив, типа:
Код

map : array [0..kol-vo_knopok_po_x,0..kol-vo_knopok_po_y] of TParametry;

Где TParametry - это:
Код

type
  TParametry  = record
                  Hint : string; // Какие-то параметры для каждой кнопки
                  Tag  : Integer;  // Какие-то параметры для каждой кнопки
                end;


И при создании кнопок измени процедурку на что-то типо того:
Код

procedure TForm1.btn1Click(Sender: TObject);
var
  cX,cY : Integer;
  i     : Integer;
  But   : TSpeedButton;
  lTop  : Integer;
  lLeft : Integer;
begin
  lTop  := 2;
  lLeft := 2;
  for cX:=0 to kol-vo_knopok_po_x do
     begin
       for cY:=0 to kol-vo_knopok_po_y do
          begin
            But := TSpeedButton.Create(Form1);
            with But do
               begin
                 Parent   := Form1;
                 Visible  := TRUE;
                 ShowHint := TRUE;
                 Hint     := map[cX,cY].Hint; // Т.е. тут мы присваиваем те самые наши значения из массива
                 Tag      := map[cX,cY].Tag;  // Т.е. тут мы присваиваем те самые наши значения из массива
                 // Хорошо бы в массиве указать для определённых кнопок определённый TNotifyEvent и присваивать его событию OnClick при создании. 
                 Height   := 20;
                 Width    := 20;
                 Top      := lTop;
                 Left     := lLeft; lLeft := Left + Width  + 1;
               end;
          end;
       lTop  := lTop  + 20 + 1;
       lLeft := 2;
     end;
end;


Не судите строго, понимаю что наспех, но думаю на мысли этого человечка я навёл.  smile 
PM MAIL   Вверх
Rodman
Дата 5.2.2008, 17:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 1
Всего: 122



Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var i,j:Integer;
    mas:array [1..10, 1..10] of tbutton;
begin
  for i:=1 to 10 do
    for j:=1 to 10 do
    begin
      mas[i,j]:=TButton.Create(Self);
      mas[i,j].Parent:=Form1;
      mas[i,j].Name:='M'+IntToStr(i)+IntToStr(j);
      mas[i,j].Height:=5;
      mas[i,j].Width:=5;
      mas[i,j].Left:=10+(i*5);
      mas[i,j].Top:=10+(j*5);
      mas[i,j].Caption:=IntToStr(i);
    end;
end;

PM MAIL WWW Skype GTalk YIM MSN   Вверх
Sanchezzz
  Дата 5.2.2008, 19:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

Репутация: 1
Всего: 60



а событие на кнопки ?
дополню пример Rodman

 mas[i,j].OnClick:= buttonClick;  //procedure Tform1.buttonClick(Sender: TObject);...

где buttonclick это процедура так мы приписываем действия на кнопки ну а дальше дело фантазии что на событие делать.



--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
OIL
Дата 6.2.2008, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 5.2.2008

Репутация: нет
Всего: нет



Спасиб!!! Спасибо за помощь! Все Окей!
Я неделю ломал голову, чуть не свихнулся. Спасибо!
Родина не забудет.[color=red][/color] smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0703 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.