17. december 1999 - 09:44Der er
4 kommentarer og 1 løsning
Ændre og opret image under runtime
Er der en som kan vise mig hvordan jeg opretter flere image under runtime og derefter ændre størelsen på hver enkel image(træk og slip) samt placreingen(Drag & Drop)inden for en shape. Jeg ønsker også at det skal være muligt at klikke på en image og derefter trykke på "del" for at slette den.
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.
type TForm1 = class(TForm) Shape1: TShape; Button1: TButton; procedure Button1Click(Sender: TObject); procedure Shape1DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean); procedure Shape1DragDrop(Sender, Source: TObject; X, Y: Integer); procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure FormShow(Sender: TObject); procedure ImageClick(Sender: TObject; var DragObject: TDragObject); private { Private declarations } LastClickedImage:TImage; public { Public declarations } end;
var Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject); var Image:TImage; begin Image:=TImage.create(Shape1); Image.Picture.LoadFromFile('D:\My Documents\grafik\fldropen.bmp'); Image.AutoSize:=True; Image.OnStartDrag:=ImageClick; Image.parent:=Form1; Image.DragMode:=dmAutomatic; end;
procedure TForm1.Shape1DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean); begin If (Source is TImage)then begin Accept:=True; If TImage(Source).Width+x>shape1.Width then Accept:=False; If TImage(Source).Height+y>shape1.Height then Accept:=False; end;
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin If ((Key=8)or(Key=46))and(Shift=[]) then begin If Assigned(LastClickedImage) then begin LastClickedImage.Free; LastClickedImage:=nil; end; end; end;
procedure TForm1.FormShow(Sender: TObject); begin LastClickedImage:=nil; end;
procedure TForm1.ImageClick(Sender: TObject; var DragObject: TDragObject); begin If sender is TImage then LastClickedImage:=TImage(Sender); end;
end.
-----Form1 som tekst---------- object Form1: TForm1 Left = 192 Top = 107 Width = 870 Height = 640 Caption = 'Form1' Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'MS Sans Serif' Font.Style = [] KeyPreview = True OldCreateOrder = False OnKeyDown = FormKeyDown OnShow = FormShow PixelsPerInch = 96 TextHeight = 13 object Shape1: TShape Left = 344 Top = 88 Width = 393 Height = 425 OnDragDrop = Shape1DragDrop OnDragOver = Shape1DragOver end object Button1: TButton Left = 176 Top = 104 Width = 75 Height = 25 Caption = 'Nyt billed' TabOrder = 0 OnClick = Button1Click end end
Jeg har lige prøvet dit program og det ser godt ud men jeg syntes ikke at jeg kan slette en image(Del).
Findes der en nem måde hvorpå jeg kan lave "træk & slip" af en tilfældig image og ved du hvordan jeg kan lave en drop down menu på en vilkårlig image??
På formen skal du sætte KeyPreview til True, det kan være derfor at du ikke han slette med del eller Backspace...
Nej jeg kende ikke en måde der er nemmer at lave :( men Der er en anden måde at gøre det på. Måden er beskrevet i et tidliger svar her på eksperten.
Dropdownmenu kan du få ved at lave en popupmenu på formen og så sætte Image.popupmenu:=popupmenu1. Jeg kan ikke huske hvad property på image hedder, men jeg tror der er noget i stillen med popupmenu.
Den anden måde hvor på at du kan drage et billede er at sætte Image'ets top & left på Image'ets OnMouseMove. Jeg er sikker på at der har været et ligende progblem tidliger. Prøv at kikke lidt tilbage i spørgsmålende.
På den måde kan man se billede blive flytte, det lyder som det er det du vil ha.
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.