26. juli 2000 - 20:06Der er
5 kommentarer og 1 løsning
opret image
når man klikker på en grafikfil i filelistbox,skal der oprettet et Image med det valgte image. det oprettede Image skal kunne trækkes rund på Formen med dette eksempel:procedure TForm1.Image30MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if (SSleft in shift) then begin Traekker:= True; Sidste_x:=x; Sidste_y:=y; end; end; procedure TForm1.Image30MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); var mx,my:Integer; begin if (traekker)and( ssleft in shift) then begin mx:=image30.Left; image30.Left:=image30.Left-(sidste_x-x); mx:=image30.Left-mx; my:=image30.Top; image30.top:=image30.top-(Sidste_y-y); my:=image30.Top-my; sidste_y:=Y-my; sidste_x:=x-mx; end else traekker:= false; end; Hvordan gør man det?
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
hvis du allerede har programmeret de events der skal bruges til at flytte billedet rundt med, hvad er så dit problem helt præcist ?
hvis dit problem er at oprette et image ud fra et valgt billede i en lidtbox kan dette gøres ex. ved følgende:
.. Private .. Public Image: Timage; end;
Procedure Tform1.formcreate(sender: Tobject); begin Image:= Timage.create; Image.parent:=form1; Image.autosize:=true; Image.OnMouseDown:=Image30MouseDown; //Den event du har programmeret ovenover. Image.OnMouseMove:=Image30MouseMove; end;
Procedure Tform1.formclose(sender: Tobject); begin Image.free; //Gøres også automatisk af Delphi, men foretrækker nu at rydde op efter mig selv. end;
Procedure Tform1.FileListbox1change(sender: Tobject); begin Image.left:=0; Image.top:=0; Image.picture.loadfromfile(filelistbox1.FileName); end;
//Hvis du skal laves et nyt Image object for hver fil du klikker på i listboksen så skal du flytte koden fra FormCreate up under FileListboxChange og så definere det i et dynamisk array eg. Images: array[0..99] of Timage;
Men hvis du ikke har brug for dette så bare benyt den ovenstående kode, den vil lave billedobjectet i runtime og tilknytte de events du selv har defineret.
I dine events skal du så udskifte alle de steder hvor der står: Image30 med Timage(sender) så vil det virke med det billedobject der kalder eventen.
God Fornøjelse og btw. så er al kode ovenover skrevet i fri luft, så forvent et par småfjel hist og her jeg har ikke haft tid til at prøve det igennem, men det burde være rimeligt smertefrit at få til at virke.
dj: når man klikker på en Image i filelistbox,bliver Image udskiftet med et anden.Det jeg ville opnå var at de Image man klikkede på i filelistbox blev på formen som i et (puslespil)
procedure TForm1.MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if (SSleft in shift) then begin Traekker:= True; Sidste_x:=x; Sidste_y:=y; end; end;
procedure TForm1.MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); var mx,my:Integer; begin if (traekker)and( ssleft in shift) then begin mx:=Timage(sender).Left; Timage(sender).Left:=Timage(sender).Left-(sidste_x-x); mx:=Timage(sender).Left-mx; my:=Timage(sender).Top; Timage(sender).top:=Timage(sender).top-(Sidste_y-y); my:=Timage(sender).Top-my; sidste_y:=Y-my; sidste_x:=x-mx; end else traekker:= false; end;
procedure TForm1.FormCreate(Sender: TObject); begin objectcount:=0; end;
procedure TForm1.FileListBox1DblClick(Sender: TObject); begin if (lowercase(Extractfileext(filelistbox1.filename))=\'.bmp\') or (lowercase(Extractfileext(filelistbox1.filename))=\'.jpg\') then begin Image[objectcount]:= Timage.create(self); Image[objectcount].parent:=form1; Image[objectcount].autosize:=true; Image[objectcount].OnMouseDown:=MouseDown; Image[objectcount].OnMouseMove:=MouseMove; Image[objectcount].left:=500; Image[objectcount].top:=0; Image[objectcount].picture.loadfromfile(filelistbox1.FileName); inc(objectcount); end; end;
procedure TForm1.Button1Click(Sender: TObject); var I: integer; begin for I:=0 to objectcount-1 do begin Image[I].free; end; end;
end.
-------------------------
Unit1.dfm
-------------------------
object Form1: TForm1 Left = 270 Top = 272 Width = 1063 Height = 450 Caption = \'Form1\' Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = \'MS Sans Serif\' Font.Style = [] OldCreateOrder = False OnCreate = FormCreate PixelsPerInch = 96 TextHeight = 13 object Label1: TLabel Left = 16 Top = 400 Width = 209 Height = 13 Caption = \'C:\\Program Files\\Borland\\Delphi5\\Projects\' end object FileListBox1: TFileListBox Left = 240 Top = 48 Width = 233 Height = 345 ItemHeight = 13 Mask = \'*.bmp;*.jpg\' TabOrder = 0 OnDblClick = FileListBox1DblClick end object DriveComboBox1: TDriveComboBox Left = 16 Top = 16 Width = 209 Height = 19 DirList = DirectoryListBox1 TabOrder = 1 end object DirectoryListBox1: TDirectoryListBox Left = 16 Top = 48 Width = 209 Height = 345 DirLabel = Label1 FileList = FileListBox1 ItemHeight = 16 TabOrder = 2 end object Button1: TButton Left = 240 Top = 16 Width = 89 Height = 25 Caption = \'Free All Images\' TabOrder = 3 OnClick = Button1Click end end
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.