Конференция "KOL" » Как сделать PaintBox?
 
  • Vinum (10.12.07 14:16) [0]
    Здравствуйте, столкнулся с проблемой создания на форме PaintBoxa,
    если я пишу так

    var pb:tkolpaintbox; gifshow: pgifshow;
    pb:=newpaintbox(kolform1);
    gifshow:=newgifshow(pb);
    //подгрузил GIF
    ....
    gifshow.ResizeParent;


    то ничего не происходит, (анимация должна быть),

    но если пишу

    var pb:tkolpaintbox; gifshow: pgifshow;
    pb:=newpaintbox(kolform1);
    gifshow:=newgifshow(paintbox1 {(на форме который лежит)});
    //подгрузил GIF
    ....
    gifshow.ResizeParent;


    то все прекрасно, GIFка анимируется в том месте, где лежит пэйнтбокс.
    Как мне сделать так, чтоб на форме эта GIFка анимировалась там где захочу?
    Прошу сильно не пинать :)
  • Дмитрий К © (10.12.07 16:23) [1]
    GifShow - сам PaintBox.
    GifShow.Left
    GifShow.Top

  • Vinum (10.12.07 16:48) [2]
    пробовал, не получается :(
    что я не так делаю?

    kolstream:=newmemorystream;
    StrStream := TStringStream.Create(ZipFileMem.data[2]) ;
    KolStream.Write(Pointer(StrStream.DataString)^,Length(StrStream.DataString));
    Kolstream.Position:=0;
    pb:=newpaintbox(kolform1);

    gifshow:=newgifshow(pb);
    Gifshow.LoadFromStream(kolstream);
    gifshow.Left:=30; gifshow.Top:=30;
    //Windows.SetParent(pb.canvas.Handle,pb.canvas.Handle);
    gifshow.ResizeParent;

  • Дмитрий К © (10.12.07 16:57) [3]
    Это уже kol/mck или все еще vcl?
  • Vinum (10.12.07 22:32) [4]
    это кол-мцк изначально был(только модули classes, scizipfile, kolgif подключить пришлось), сейчас уже четкая грань стерлась :), но все, что написано выше (код), работает, анимация выводится, но выводится только на объектах, которые были ручками брошены на форму. Если создаешь объект из под программы pb:=newpaintbox(kolform1); то в нем ничего не отображается, хотя программа запускается и вроде что-то делает. Попробую аналогичное написать на VCL, может что и получится, но мне важен размер программы..хотя, scizipfile добавляет в ехешку 100кб :)
  • Дмитрий К © (10.12.07 23:11) [5]
    GifShow не нужен PaintBox для отображения анимации.
     GifShow := NewGifShow(form);
     GifShow.Left := 10;
     GifShow.Top := 10;
     GifShow.LoadFromStream(KolStream);


    Все.

    Для распаковки Zip можно использовать KOLUnzip:
    http://www.kolnmck.ru/files/components/compress/kol_unzip.7z
  • Vinum (10.12.07 23:28) [6]
    KOLUnzip по-моему не подходит (а мб и подойдет, я не смотрел его), потому что основная фишка scizipfile это доступ к данным архива без распаковки и создания временных файлов.

    GifShow := NewGifShow(form);
    GifShow.Left := 10;
    GifShow.Top := 10;
    GifShow.LoadFromStream(KolStream);



    спасибо большое, помогло :) 2 дня мучался
 
Конференция "KOL" » Как сделать PaintBox?
Есть новые Нет новых   [134431   +10][b:0][p:0.001]