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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.02.2011, 19:32   #1
kirsan007
Пользователь
 
Аватар для kirsan007
 
Регистрация: 24.02.2011
Сообщений: 28
Восклицание TScrollBox & Array of TImage

Необходимо на TScrollBox разместить (программно) TImage. При добавлении новой картинки предыдущие смещать вниз на n пикселей(т.е одна над другой добавляется)
Я делал так

Код:
var y: integer;  mImage: Array[1..100500] of TImage; i:integer;

.................................

y:=y+1;

for i := 1 to y-1 do begin
mImage[i].Top := mImage[i].Top+77;
end;

mImage[y] := TImage.Create(nil);
mImage[y].Parent := ScrollBox1;
mImage[y].Top := 20;
mImage[y].Left := 40;
mImage[y].Width := 590;
mImage[y].Picture.LoadFromFile('someimage.bmp');
Где y порядковый номер Timage от 1 до n

Всё добавляется так как надо. НО когда прокручиваешь вниз скрулбокс и добавляешь ещё 1 картинку то она добавляется по верх других(т.е не сначала окошка скрулбокса, а с начала прокрученной области)

Надеюсь поймёте.
Отаку
kirsan007 вне форума Ответить с цитированием
Старый 24.02.2011, 19:49   #2
ArtGrek
DelphiProger
Участник клуба
 
Аватар для ArtGrek
 
Регистрация: 14.11.2010
Сообщений: 1,023
По умолчанию

даже не прадставляеш как хорошо понимаю тебя)))
Код:
mImage[i].Top := mImage[i].Top+77 - ScrollBox.Position;
VirusN13
ArtGrek вне форума Ответить с цитированием
Старый 24.02.2011, 20:05   #3
kirsan007
Пользователь
 
Аватар для kirsan007
 
Регистрация: 24.02.2011
Сообщений: 28
По умолчанию

Увы =( не помогло
Изменений особых не произошло.

Вот иллюстрации
Без прокрутки

Прокрутил


Как видно из иллюстраций, 8й пост добавился не над всеми а поверх 6го.
Отаку
kirsan007 вне форума Ответить с цитированием
Старый 24.02.2011, 20:12   #4
ArtGrek
DelphiProger
Участник клуба
 
Аватар для ArtGrek
 
Регистрация: 14.11.2010
Сообщений: 1,023
По умолчанию

даите весь код или залеите проект
VirusN13
ArtGrek вне форума Ответить с цитированием
Старый 24.02.2011, 20:16   #5
Rin
Негодник
Форумчанин
 
Аватар для Rin
 
Регистрация: 10.11.2009
Сообщений: 880
По умолчанию

По видимому значения ScrollBox.position не совпадает с значением Top.
Top измеряется в пикселях, а вот ScrollBox.position не знаю в чём, но видать не в пикселях.
Код:
var multiplication:extended; 
.............................
multiplication:=2;//подбери множитель

mImage[i].Top := mImage[i].Top+77 - (ScrollBox.Position*multiplication);
и всё в поряде будет)
P.S. Раз у тебя будут добавляться новые записи, то Position у скролбокса будет меняться, следовательно multiplication тоже.
Если помог, проси поставить минус. Будь оригинален!

Последний раз редактировалось Rin; 24.02.2011 в 20:22.
Rin вне форума Ответить с цитированием
Старый 24.02.2011, 20:51   #6
kirsan007
Пользователь
 
Аватар для kirsan007
 
Регистрация: 24.02.2011
Сообщений: 28
Восклицание

Тоже не вышло =(
Видимо что то не то делаю
Вот примерный код (на форме 1 панель, на ней мемо + баттон, ну и сам скрулбокс

Код:
unit Unit10;

interface

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

type
  TForm10 = class(TForm)
    ScrollBox1: TScrollBox;
    Panel1: TPanel;
    Button1: TButton;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form10: TForm10;  x,y,z : integer;  mImage: Array[0..100500] of TImage; i:integer;

implementation

{$R *.dfm}

procedure TForm10.Button1Click(Sender: TObject);
var text:string; multiplication:extended;
begin
y:=y+1;
if y>1 then begin
multiplication:=190;
for i := 1 to y-1 do mImage[i].Top := mImage[i].Top+77 //- (ScrollBox.Position*multiplication);
end;

mImage[y] := TImage.Create(nil);
mImage[y].Parent := ScrollBox1;
mImage[y].Top := 20;
mImage[y].Left := 40;
mImage[y].Width := 590;
mImage[y].Picture.LoadFromFile('chat_bord1.bmp');
x:=-54;
with mImage[y].Canvas do
  begin
    Font.Color  := clWhite;
    Brush.Style := bsclear;
    Font.Size   := 12;
    TextOut(91, x+71, Memo1.Lines[0]);
  end;
  Memo1.Lines.Clear;
end;

procedure TForm10.FormCreate(Sender: TObject);
begin
y := 0;
end;

end.
Вложил картинку.
Изображения
Тип файла: bmp chat_bord1.bmp (126.7 Кб, 113 просмотров)
Отаку

Последний раз редактировалось kirsan007; 24.02.2011 в 20:53.
kirsan007 вне форума Ответить с цитированием
Старый 24.02.2011, 21:46   #7
Rin
Негодник
Форумчанин
 
Аватар для Rin
 
Регистрация: 10.11.2009
Сообщений: 880
По умолчанию

У меня добавляет куда надо, только вот затирая нижние.
13
12
11
10
9
8
7
6
5
4
3
2
1
опускаю скрол в самый низ, вписываю в мемо "14" и жмахаю по button
вставляет куда надо, только вот с 1 по 9 затирает.
Если помог, проси поставить минус. Будь оригинален!
Rin вне форума Ответить с цитированием
Старый 24.02.2011, 21:52   #8
kirsan007
Пользователь
 
Аватар для kirsan007
 
Регистрация: 24.02.2011
Сообщений: 28
По умолчанию

Если не сложно скринами покажите(из сказанного мало что понял).
И как заставить этот код нормально работать?
Отаку
kirsan007 вне форума Ответить с цитированием
Старый 24.02.2011, 22:27   #9
Rin
Негодник
Форумчанин
 
Аватар для Rin
 
Регистрация: 10.11.2009
Сообщений: 880
По умолчанию

при вставке "8" стирается "1".
Изображения
Тип файла: jpg 1.jpg (31.5 Кб, 112 просмотров)
Тип файла: jpg 2.jpg (29.8 Кб, 125 просмотров)
Если помог, проси поставить минус. Будь оригинален!
Rin вне форума Ответить с цитированием
Старый 24.02.2011, 22:31   #10
kirsan007
Пользователь
 
Аватар для kirsan007
 
Регистрация: 24.02.2011
Сообщений: 28
По умолчанию

Это мой код или вы дописали его? Если дописали то поделитесь пожалуйста.
Потому что у меня совсем другое получается(скрины уже выкладывал).

И если можете организовать данную задачу иным способом, или довести мой код до ума, то не могли бы вы сделать это?
Отаку
kirsan007 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
str->array & array->str LeoN PHP 6 06.07.2010 22:38
TImage Array? Vigilante Компоненты Delphi 18 03.02.2010 10:40
TForm & TImage & PNG & Прозрачность delphi_beginner Общие вопросы Delphi 7 19.09.2009 08:46
TImage & TLabel neizerth Общие вопросы C/C++ 7 15.02.2009 13:14
прокрутка в tScrollBox Altera Компоненты Delphi 1 20.10.2008 07:22