попробовал - не помогает..... ((
повторюсь - мувик ресайзицца только после клика по нему....
вот код на всякий случай - может поможет что.... panButton - это контейнер для TShockWave компонента swfButton - простая панелька....
Код:
procedure TfmNitro.ApplicationEvents1Message(var Msg: tagMSG; var Handled: Boolean);
var cp: TPoint; i: integer; s: string;
begin
case msg.message of
WM_LBUTTONUP : if FHover <> 0 then begin panButton.Visible:= false; swfButton.StopPlay;
FCommand:= hextoint(leftstr(extractfilename(swfButton.Movie),8)) - hextoint(appset.sett[ 1]);
if FCommand > 1 then begin appSet.State.Add(leftstr(extractfilename(swfButton.Movie),8));
LoadFrame;
end;
end;
WM_MOUSEMOVE : begin getcursorpos(cp); FHover:= 0;
for i:= 1 to hextoint(appset.sett[ 4]) do
if (cp.X > hextoint(appset.sett[1+5*i]) + ScreenLeft)
and (cp.X < hextoint(appset.sett[1+5*i]) + ScreenLeft + hextoint(appset.sett[1+5*i+2]))
and (cp.Y > hextoint(appset.sett[2+5*i]) + ScreenTop)
and (cp.Y < hextoint(appset.sett[2+5*i]) + ScreenTop + hextoint(appset.sett[2+5*i+2]))
and (backSFW.CurrentFrame+1 = backSFW.TotalFrames)
then FHover:= i; //swfButton.Perform(msg.message, VK_SELECT, msg.lParam); end;
end;
end;
end;
Код:
procedure TfmNitro.ApplicationEvents1Idle(Sender: TObject; var Done: Boolean);
var cp: tpoint; j, k: cardinal; s, t: string;
begin
//-----------------------------------------------------------------------------
j:= 0; for k:= 0 to AppSet.State.Count - 1 do j:= j + HexToInt(AppSet.State[ k]);
j:= j - HexToInt(AppSet.State[ 0]); s:= IntToHex(j, 8); AppSet.State[ 0]:= AppSet.Sett[ 0]; t:= s;
//-----------------------------------------------------------------------------
if FHover <> 0
then begin
getcursorpos(cp);
with panButton do begin
SendToBack; swfButton.StopPlay;
width := hextoint(appset.sett[1+5*FHover+2]);
height := hextoint(appset.sett[2+5*FHover+2]);
Left := hextoint(appset.sett[1+5*FHover]) + ScreenLeft;
Top := hextoint(appset.sett[2+5*FHover]) + ScreenTop;
if FileExists(appSet.media + s + '\' + appset.sett[5*FHover] + '.swf') then s:= appset.media + s + '\' + appset.sett[5*FHover] + '.swf';
if FileExists(appset.media + s + '\' + appset.sett[5*FHover] + '.jpg') then s:= appset.media + s + '\' + appset.sett[5*FHover] + '.jpg';
swfButton.LoadMovie(0, s);
swfButton.Play; Visible:= true; BringToFront;
end; end else begin swfButton.StopPlay; swfButton.FrameNum:= 0; end;
end;
попробовал пообкатывать на пустом примере - без обработчиков сообщений - результат аналагичный.... на ресайз компонента - мувик реагирует только после клика на нем....
добавлено через 2 минуты
в процедуре LoadFrame никаких действий по отношению к swfButton не производицца.....
насчет масштабирования - у этого компонента свои специфичные свойства - ScaleMode например. выставлено в ExactFit или ShowAll - те по идее - растягивать мувик забив на пропорции или умещать пропорционально по малой стороне компонента.... толку - ноль, автоматическое масштабирование не происходит.....