Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.10.02;
Скачать: [xml.tar.bz2];

Вниз

SetWallpaper - помогите вставить картинку !!!   Найти похожие ветки 

 
312Kbps   (2005-09-08 01:49) [0]

SetWallpaper("Имя файла",2) - так подставляется из файла картинка на рабочий стол. Подскажите, пожалуйста, как мне вставить картинку не из файла, а из объекта TImage ???


 
DesWind ©   (2005-09-08 02:01) [1]

Откуда ты берешь картинку в TImage? Если сам рисуешь, то простейший путь, сохранить ее в файл и потом поставить.


 
312Kbps   (2005-09-08 02:07) [2]

Надо именно через объект !!!
Скажем, картинка в TImage появляется путем захвата рабочего стола !
Подаскажите )))


 
DesWind ©   (2005-09-08 02:14) [3]

Тебе обои нада поставить или рабочий стол перерисовать? ;)


 
312Kbps   (2005-09-08 02:22) [4]

Мне надо вставить картинку из объекта TImage, а не из файла !
Как это сделать ?


 
312Kbps   (2005-09-08 02:42) [5]

Ни кто не может мне подсказать, как это сделать ?


 
DesWind ©   (2005-09-08 02:44) [6]

Еще раз! Куда те ее надо вставить? ))))


 
312Kbps   (2005-09-08 02:46) [7]

Смена картинки рабочего стола
SetWallpaper("Имя файла",2)
Так вот мне вместо "Имени файла" надо подставить картинку из объекта TImage
Как ?


 
Defunct ©   (2005-09-08 02:48) [8]

312Kbps   (08.09.05 02:22) [4]

У тебя вызывает проблему сохранение изображения из TImage в файл?
тебе ж уже подсказали в [1] решение твоей задачи, причем самый простой.


 
Джо ©   (2005-09-08 02:50) [9]

Тебе придется смириться с мыслью, что функции SetWallpaper требуется именно имя файла.


 
312Kbps   (2005-09-08 02:51) [10]

Если изображение одно, то можно сохранить, а если будет идти поток картинок ! Без сохранения в файл, напрямую , как это сделать ???


 
312Kbps   (2005-09-08 02:53) [11]

Или как по другому заменить картинку на рабочем столе из TImage ?


 
Defunct ©   (2005-09-08 03:00) [12]

312Kbps   (08.09.05 02:51) [10]

Если будет поток, тогда и сохраняй поток.
Ты что там фильмы собираешься на рабочем столе крутить?


> Без сохранения в файл, напрямую , как это сделать

может ты имеешь в виду под "рабочим столом" экран?


 
DesWind ©   (2005-09-08 03:01) [13]

а если будет идти поток картинок

Тогда нада копать IActiveDesktop, вроде...


 
312Kbps   (2005-09-08 03:03) [14]

будет небольшой мониторинг на рабочем столе !


 
Defunct ©   (2005-09-08 03:05) [15]

312Kbps   (08.09.05 03:03) [14]

Гм.. тогда для чего нужен TImage?


 
DesWind ©   (2005-09-08 03:05) [16]

Defunct ©   (08.09.05 03:00) [12]

Есть такая штука - фильмы показывать как обои... Интересно смотриться...


 
312Kbps   (2005-09-08 03:06) [17]

(15) потому как туда будет передоваться изображение


 
DesWind ©   (2005-09-08 03:07) [18]

312Kbps   (08.09.05 03:03) [14]

Объясни толком, что нужно!


 
312Kbps   (2005-09-08 03:08) [19]

я ещё сам толком не знаю )))
Прмем как константу, что есть объект TImage из которого надо передать картинку на рабочий стол !


 
DesWind ©   (2005-09-08 03:10) [20]

Что такое "рабочий стол"?


 
Defunct ©   (2005-09-08 03:19) [21]

312Kbps   (08.09.05 03:08) [19]

Бредовая задача.
Зачем принимать как константу какую-то чушь. Ты сам подумай. TImage - компонент для отбражения картинок (не для хранения, и тем более не для формирования). Накой из него еще что-то куда-то передавать?


 
Antonn ©   (2005-09-08 04:43) [22]

312Kbps   (08.09.05 1:49)
SetWallpaper("Имя файла",2) - так подставляется из файла картинка на рабочий стол.

приведи содержимое SetWallpaper


 
IceBeerg ©   (2005-09-08 10:16) [23]

312Kbps   (08.09.05 3:03) [14]
будет небольшой мониторинг на рабочем столе !

Так создавай TImage в RunTime и родителем делай рабочий стол и рисуй на этом TImage все, что хочеш...
К сожалению примера не могу дать, был где-то пример как создать кнопку на рабочем столе, но его долго искать...


 
312Kbps   (2005-09-08 12:57) [24]

(23) Извени, но ты не мог бы мне пободдробней объяснить как это делается ? Спасибо !


 
IceBeerg ©   (2005-09-08 13:54) [25]

Вот, откопал pas файл от компонента:
unit APIButton;

interface

uses
Windows, Messages, Forms;

type
TAPIButton = class;
TButtonEvent = procedure(Sender: TAPIButton) of object;

TAPIButton = class
protected
  // varibles
  FHandle:THandle;
  FTop,FLeft,FWidth,FHeight:Integer;
  FMouseClick:TButtonEvent;
  OldWinProc,NewWinProc:Pointer;
  FMouse:Boolean;
  // for "Caption" property
  function GetCaption:string;
  procedure SetCaption(const Value: string);
  // for "Left" property
  procedure SetLeft(const Value: Integer);
  // for "Top" property
  procedure SetTop(const Value: Integer);
  // for "Width" property
  procedure SetWidth(const Value: Integer);
  // for "Height" property
  procedure SetHeight(const Value: Integer);
  // for "Visible" property
  function GetVisible:Boolean;
  procedure SetVisible(const Value: Boolean);
  // for "Enabled" property
  function GetEnabledB:Boolean;
  procedure SetEnabledB(const Value: Boolean);
  // for "Parent" property
  function GetParent:THandle;
  procedure SetParent(const Value: THandle);
  // for Windows Messages
  procedure msgUser(var Msg:TMessage);
published
  property Handle: THandle read FHandle default 0;
  property Caption:string read GetCaption write SetCaption;
  property Left:Integer read FLeft write SetLeft;
  property Top:Integer read FTop write SetTop;
  property Width:Integer read FWidth write SetWidth;
  property Height:Integer read FHeight write SetHeight;
  property Visible:Boolean read GetVisible write SetVisible;
  property Enabled:Boolean read GetEnabledB write SetEnabledB;
  property Parent:THandle read GetParent write SetParent;
  property OnMouseClick:TButtonEvent read FMouseClick write FMouseClick;
  procedure SetFocus;
  procedure SetBounds(ALeft,ATop,AWidth,AHeight: Integer);
  constructor Create(ParentControl: THandle);
  destructor UnCreate;
end;

implementation

{ TAPIButton }

constructor TAPIButton.Create(ParentControl: THandle);
begin
 FHandle:=CreateWindow("Button","APIButton",WS_VISIBLE or WS_CHILD,0,0,72,25,
             ParentControl,0,hInstance,nil);
 SendMessage(FHandle,WM_CREATE,0,0);
 FMouse:=GetSystemMetrics(SM_SWAPBUTTON) = 1;
 FLeft:=0;
 FTop:=0;
 FWidth:=72;
 FHeight:=25;
 NewWinProc:=MakeObjectInstance(msgUser);
 OldWinProc:=Pointer(SetWindowLong(FHandle,GWL_WNDPROC,Cardinal(NewWinProc)));
end;

destructor TAPIButton.UnCreate;
begin
 Visible:=False;
 SendMessage(FHandle,WM_DESTROY,0,0);
end;

function TAPIButton.GetCaption: string;
var
 Buf:string;
 L:Integer;
begin
 L:=GetWindowTextLength(FHandle) + 1;
 SetLength(Buf,L);
 GetWindowText(FHandle,PChar(Buf),L);
 Result:=PChar(Buf);
end;

function TAPIButton.GetEnabledB: Boolean;
begin
 Result:=IsWindowEnabled(FHandle);
end;

function TAPIButton.GetVisible: Boolean;
begin
 Result:=IsWindowVisible(FHandle);
end;

procedure TAPIButton.SetBounds(ALeft, ATop, AWidth, AHeight: Integer);
begin
 FLeft:=ALeft;
 FTop:=ATop;
 FWidth:=AWidth;
 FHeight:=AHeight;
 SetWindowPos(FHandle, 0, ALeft, ATop, AWidth, AHeight,0)
end;

procedure TAPIButton.SetCaption(const Value: string);
begin
 SetWindowText(FHandle,PChar(Value));
end;

procedure TAPIButton.SetEnabledB(const Value: Boolean);
begin
 EnableWindow(FHandle,Value);
end;

procedure TAPIButton.SetFocus;
begin
 Windows.SetFocus(FHandle);
end;

procedure TAPIButton.SetHeight(const Value: Integer);
begin
 FHeight:=Value;
 SetWindowPos(FHandle,0,FLeft,FTop,FWidth,Value,0);
end;

procedure TAPIButton.SetLeft(const Value: Integer);
begin
 FLeft:=Value;
 SetWindowPos(FHandle,0,Value,FTop,FWidth,FHeight,0);
end;

procedure TAPIButton.SetWidth(const Value: Integer);
begin
 FWidth:=Value;
 SetWindowPos(FHandle,0,FLeft,FTop,Value,FHeight,0);
end;

procedure TAPIButton.SetTop(const Value: Integer);
begin
 FTop:=Value;
 SetWindowPos(FHandle,0,FLeft,Value,FWidth,FHeight,0);
end;

procedure TAPIButton.SetVisible(const Value: Boolean);
begin
 if Value then
    ShowWindow(FHandle,SW_SHOW)
 else
    ShowWindow(FHandle,SW_HIDE);
end;

function TAPIButton.GetParent: THandle;
begin
 Result:=Windows.GetParent(FHandle);
end;

procedure TAPIButton.SetParent(const Value: THandle);
begin
 Windows.SetParent(FHandle, Value);
end;

procedure TAPIButton.msgUser(var Msg: TMessage);
 procedure RaiseClick;
 var
    Pnt:TPoint;
 begin
    GetCursorPos(Pnt);
    if Assigned(FMouseClick) and (WindowFromPoint(Pnt) = FHandle) then
       FMouseClick(Self);
 end;
begin
 Msg.Result:=CallWindowProc(OldWinProc,FHandle,Msg.Msg,Msg.WParam,Msg.LParam);
 if not FMouse and (Msg.Msg = Wm_LButtonUp) then
    RaiseClick
 else if FMouse and (Msg.Msg = Wm_RButtonUp) then
    RaiseClick;
end;

end.

Попробуй сделать по аналогии...


 
312Kbps   (2005-09-08 14:07) [26]

Спасибо !


 
DesWind ©   (2005-09-08 14:09) [27]

У меня получилось так


function GetDesktopWindow: HWND; external "user32.dll";

......
Btn:=TButton.Create(Form1);
Btn.parent:=GetDesktopWindow;
............


 
312Kbps   (2005-09-08 14:34) [28]

Btn.parent:=GetDesktopWindow;

[Error] Unit1.pas(36): Incompatible types: "TWinControl" and "HWND"


 
DesWind ©   (2005-09-08 14:40) [29]

Ну обшибся малек Btn.ParentWindow:=....;



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2005.10.02;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.52 MB
Время: 0.005 c
1-1126176960
Рафик
2005-09-08 14:56
2005.10.02
ListBox1 - Двойной щелчок


1-1125988262
Lexandr
2005-09-06 10:31
2005.10.02
Zlib - архивирование


1-1126014484
NikNet
2005-09-06 17:48
2005.10.02
Что значит VMT?


1-1126024282
ДимДимыч
2005-09-06 20:31
2005.10.02
Выполнение скриптов


1-1126246823
whiledo
2005-09-09 10:20
2005.10.02
Работаем с Image





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский