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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.05.2009, 10:40   #1
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию Динамически не через массив

Мне нужно динамически создать много объектов Image, но не хотелось бы использовать массив, так как вся программа "заточена" под использование изображений с именем TexImg12043 и ObjImg12032, где первые две цифры от 01 до 16, вторые от 01 до 16, третья от 1 до 4.
можно конечно их создать "вручную":
Код:
unit ImageCreatorUnit;

interface

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

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Button1: TButton;
    Image1: TImage;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  SX,SY,Typer,FullTyper:String;
  I,X,Y,Z:Byte;
  N:Integer;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
 For I:=1 to 2 do
  Begin
   If I = 1 Then Typer:='Tex' Else Typer:='Obj';
   For Z:=1 to 4 do
    For X:=1 to 16 do
     For Y:=1 to 16 do
      Begin
       If X<10 Then SX:='0'+IntToStr(X) Else SX:=IntToStr(X);
       If Y<10 Then SY:='0'+IntToStr(Y) Else SY:=IntToStr(Y);
       N:=(Y-1)*16+X;
       Memo1.Lines.Add('    Object '+Typer+'Img'+SX+SY+IntToStr(Z)+':TImage');
       Memo1.Lines.Add('      Left = '+IntToStr(((N-1) Div 16)*32 +((N-1) Mod 16)*32));
       Memo1.Lines.Add('      Top = '+IntToStr(368+(((N-1) Div 16)*16-((N-1) Mod 16)*16)));
       Memo1.Lines.Add('      Width = 64');
       Memo1.Lines.Add('      Height = 32');
       Memo1.Lines.Add('      ParentShowHint = False');
       Memo1.Lines.Add('      ShowHint = True');
       Memo1.Lines.Add('    End');
      End;
  End;
end;

end.
А потом этот текст скидывать в код (dfm) другой программы.

Правда при таким подходе после запуска программа выжидает около 30 сек и только после этого запускается.

P.S. Все изображения должны создаваться на панели Panel1.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 17.05.2009, 17:21   #2
Ntlegend
Форумчанин
 
Аватар для Ntlegend
 
Регистрация: 12.05.2007
Сообщений: 373
По умолчанию

я чот не пойму.. тебе нада их создавать динамически.. или сттически?? если
Цитата:
...этот текст скидывать в код (dfm) другой программы...
то это никакое не динамическое создание..

динамически создавать попробуй так:
Код:
var SX,SY,Typer,FullTyper:String;
     I,X,Y,Z:Byte;
     N:Integer;
     Img:TImage;
begin
 For I:=1 to 2 do
   For Z:=1 to 4 do
    For X:=1 to 16 do
     For Y:=1 to 16 do
      Begin
         Img := TImage.Create(Self);
         Img.Parent := Panel1;
         If I = 1 Then Typer:='Tex' Else Typer:='Obj';
         Img.Name := Typer+'Img'+IntToStr(X)+IntToStr(Y)+IntToStr(Z);
         N:=(Y-1)*16+X;
         Img.Left := (((N-1) Div 16)*32 +((N-1) Mod 16)*32));
         Img.Top := (368+(((N-1) Div 16)*16-((N-1) Mod 16)*16)));
         Img.Width := 64;
         Img.Height := 32;
      End;
Перемен! - требуют наши сердца. Перемен! - требуют наши глаза.
В нашем смехе и в наших слезах, И в пульсации вен:
"Перемен!Мы ждем перемен!"
Ntlegend вне форума Ответить с цитированием
Старый 17.05.2009, 17:25   #3
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Я и описывал статический метод:

Цитата:
можно конечно их создать "вручную":
А этот код сейчас попробую.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамически созданный tabSheet S@fer Общие вопросы Delphi 7 08.04.2009 12:03
PopupMenu и динамически созданые компоненты mastersoftna Общие вопросы Delphi 2 11.01.2009 00:11
Динамически массив как параметр ф-ии SNUPY Помощь студентам 2 11.05.2008 01:16
динамически создать подключение через ADO А. Долматов БД в Delphi 8 16.10.2007 20:08