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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.04.2015, 19:13   #1
zvygin1964
Старожил
 
Аватар для zvygin1964
 
Регистрация: 19.06.2013
Сообщений: 2,463
По умолчанию Передача параметров в procedure по ссылке Delphi7

Хочу так:
Код:
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids;

type
  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
  private
    { Private declarations }
  public
    { Public declarations }

    procedure Draw_a_picture30(var Form3.StringGrid1.Cells[1,2]:TStringGrid; Form3.StringGrid1.Cells[1,3]:TStringGrid);
  end;

var
  Form1: TForm1;

implementation

 uses Unit3;
 {$R *.dfm}
Пока работает так:
Код:
public
     procedure Draw_a_picture30(var background: String
                                 imagename1:  String; X_bitmap1,  Y_bitmap1:  Integer;
                                 imagename2:  String; X_bitmap2,  Y_bitmap2:  Integer;
                                 //.........................
                                 imagename29: String; X_bitmap29, Y_bitmap29: Integer;
                                 imagename30: String; X_bitmap30, Y_bitmap30: Integer);
    { Public declarations }
  end;
Как обойтись без глобальных переменных?
Репутация: полный "0"
zvygin1964 вне форума Ответить с цитированием
Старый 11.04.2015, 19:18   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Что процедура должна делать?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 11.04.2015, 19:21   #3
zvygin1964
Старожил
 
Аватар для zvygin1964
 
Регистрация: 19.06.2013
Сообщений: 2,463
По умолчанию

Рисовать битмапы.

Код:
begin
Back.LoadFromResourceName(HInstance,background);// Загрузка в BitMap выбранного графического файла
  Form4.Image1.canvas.Draw(0,0,Back); // Перенос изображения на канву формы
  // выведем рисунок
  bitmap.LoadFromResourceName(HInstance,imagename1);
  bitmap.Transparent:= True; //
  bitmap.TransParentColor:= bitmap.canvas.pixels[1,1];
  X_bitmap:= X_bitmap1  ;
  Y_bitmap:= Y_bitmap1 ;
  // выведем рисунок
  Form4.Image1.canvas.Draw(X_bitmap,Y_bitmap,bitmap);
//...........................
Код:
  bitmap.LoadFromResourceName(HInstance,imagename30);
  bitmap.Transparent:= True;
  bitmap.TransParentColor:= bitmap.canvas.pixels[1,1];
  X_bitmap:=X_bitmap30 ;
  Y_bitmap:=Y_bitmap30 ;
    // выведем рисунок
  Form4.Image1.canvas.Draw(X_bitmap,Y_bitmap,bitmap);
end;
Репутация: полный "0"

Последний раз редактировалось zvygin1964; 12.04.2015 в 08:44.
zvygin1964 вне форума Ответить с цитированием
Старый 11.04.2015, 19:31   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

То есть процедуре передается 30 имен ресурсов и 30 пар координат отрисовки? background: String это что? Про какие глобальные переменные речь?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 11.04.2015, 19:40   #5
zvygin1964
Старожил
 
Аватар для zvygin1964
 
Регистрация: 19.06.2013
Сообщений: 2,463
По умолчанию

Да, Bitmap уже больше чем 30. Это пока только для одной из форм... А имен ресурсов и пар координат отрисовки ещё больше. Пока даже не предполагаю сколько.
Можно .exe глянуть тут http://rghost.ru/6TwJRxqjr
Репутация: полный "0"
zvygin1964 вне форума Ответить с цитированием
Старый 11.04.2015, 19:41   #6
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,544
По умолчанию

Массив битмапов заведите.
Arigato вне форума Ответить с цитированием
Старый 11.04.2015, 19:44   #7
zvygin1964
Старожил
 
Аватар для zvygin1964
 
Регистрация: 19.06.2013
Сообщений: 2,463
По умолчанию

Когда буду менять, то запутаюсь в номерах. И так по названиям глобальных переменных мозги взрываются. Хотел в StringGrid1 подписывать во время их использования.
Репутация: полный "0"
zvygin1964 вне форума Ответить с цитированием
Старый 11.04.2015, 19:48   #8
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Можно рисовать один битмап в процедуре, передавая имя и координаты, обращаться в цикле. Имена и координаты хранить в массиве, тогда и цикл вызывающий удобно сделать.

Можно все битмапы рисовать в процедуре, передать параметры массивом, и цикл в процедуре.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 12.04.2015, 01:10   #9
kropotkina-alice
Форумчанин
 
Аватар для kropotkina-alice
 
Регистрация: 27.10.2014
Сообщений: 594
По умолчанию

Прошу прощения...
Во-первых - с этой "кучей" битмапов ваша программа будет вести себя как беременный гиппопотам...
Совет номер один - если логика программы позволяет, перенесите всю графику в память, так её обработка станет гораздо быстрее.
Второе. Вы зря полагаете, что самостоятельные процедуры обработки графики в каждой вашей юните - это зло. Это добавит минимум объёма программе, а вас избавит от многих "геморроидальных" проявлений...
kropotkina-alice вне форума Ответить с цитированием
Старый 12.04.2015, 06:54   #10
zvygin1964
Старожил
 
Аватар для zvygin1964
 
Регистрация: 19.06.2013
Сообщений: 2,463
По умолчанию

Цитата:
Сообщение от kropotkina-alice Посмотреть сообщение
перенести графику в память...
Как это попросить у Google ?

kropotkina-alice, вы имели ввиду:
Из .res перевести все изображения в Bitmap; Каждый Bitmap превратить в массив пикселей; Преобразовывать каждый массив пикселей обратно в Bitmap; А затем выводить на TImage ?

Или
pictures: array [1..1000] of TBitMap;// и дополнительный к нему массив:
coordinates: array : Array[1..100,1..100] of Integer;//координаты выводимых рисунков

Аватар предложил:
pictures: array [1..1000] of String;// и дополнительный к нему массив:
coordinates: array : Array[1..100,1..100] of Integer;//координаты выводимых рисунков
Репутация: полный "0"

Последний раз редактировалось zvygin1964; 12.04.2015 в 12:44.
zvygin1964 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
передача параметров по ссылке и по указателю Smogg Общие вопросы Delphi 7 10.03.2014 23:40
Передача id по ссылке PHP kop PHP 2 11.07.2012 23:40
Передача параметра в ссылке Pingvinenok_Lolo PHP 5 26.02.2012 14:25
Передача массива по ссылке xxxsas PHP 4 20.06.2011 14:52
передача параметра по ссылке veter_s_morya PHP 7 18.10.2009 16:43