Здравствуйте, Nagir, Вы писали:
N>Всем доброго времени суток,
N>Подскажите плиз как можно в свой контрол унаследованный от TWinControl вставить картинку. N>Только эта картинка должна быть на весь этот контрол.
N>Вставлял картинку просто в мой контрол (как child control), но после загрузки картинки она не отображается.
Очень подробное объяснение. Все тут же поняли в чем у тебя проблема... N>Какие можно придумать решения? N>Может есть какой-то аналог TImage только унаследованный от TWinControl?
Нет. Есть TImage, обычно большего и не надо. Покажи как контрол вставляешь и как картинку загружаешь
Здравствуйте, sfsoft, Вы писали:
S>К тому же раз уж вы пишите fImage := TImage.Create(self), то вызов fImage.Free необязателен.
Ну это все замечатьельно, но как узнать загружена ли в Image картинка?
[..] N>Ну это все замечатьельно, но как узнать загружена ли в Image картинка?
Попробуй Image.Picture.Bitmap.SaveToFile (), и посмотри — сохранет или нет.
И еще после вставки попробуй написать Image.Visible := true. Мало ли — может, она невидимая.
Здравствуйте, Сергей, Вы писали:
С>Здравствуйте, Nagir, Вы писали:
С>Попробуй Image.Picture.Bitmap.SaveToFile (), и посмотри — сохранет или нет.
Как-то нехорошо при WM_PAINT-е каждый раз пытаться сохранять в файл
Здравствуйте, Nagir, Вы писали:
N>Здравствуйте, Сергей, Вы писали:
С>>Здравствуйте, Nagir, Вы писали:
С>>Попробуй Image.Picture.Bitmap.SaveToFile (), и посмотри — сохранет или нет. N>Как-то нехорошо при WM_PAINT-е каждый раз пытаться сохранять в файл
епрст.
Имею ввиду, что SaveToFile () — это чисто чтобы проверить — загружена или нет. Если нормально сохраняет — значит загружена. И грабли в другом месте.
А насчет visible конкретно имею ввиду вот что:
constructor TImageControl.Create(AOwner: TComponent);
begin
inherited Create(aOwner);
Width := 100;
Height := 100;
fImage := TImage.Create(self);
fImage.Align := alClient;
fImage.Visible := True;// где-то такое мне приходилось втыкать, по умолчанию создавался невидимый контролend;
Здравствуйте, sfsoft, Вы писали:
S>Блин, ну вы что издеваетесь? Я же уже написал, что грабли в том, что fImage не присваевается свойство parent
Попробовал — все отлично работает (если присвоить Parent). Огромное спасибо за помощь и терпение
Вот только как узнать загружена ли картинка в Image могу найти...
Просто хочу рисовать что-то на WM_PAINT если ее нет.
Здравствуйте, Сергей, Вы писали:
С>Здравствуйте, Nagir, Вы писали:
С>
С>procedure TImageWinControl.mSetImage (image : TImage);
С>begin
С> if Assigned (image) then
С> begin
С> mImage.Assign (image);
С> mImage.Picture.OnChange := imageChanged;
С> end;
С>end;
С>
С>Оно?
Не совсем оно. OnChange вызывается даже при инициализации — не подходит.
Единственное что придумал для проверки наличия картинки — это проверить ширину или высоту:
if mImage.Picture.Width = 0 then
begin//....end
else
begin//....end;
Здравствуйте, Андреус, Вы писали:
А>используй функцию Image.Picture.Graphic.Empty А>(естественно, предварительно надо проверить на nil Image.Picture и А>Image.Picture.Graphic)