Avatar billede anold Nybegynder
17. december 1999 - 09:44 Der 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.
Avatar billede snorga Nybegynder
17. december 1999 - 15:28 #1
Dette skulle kunne gøre de fleste dog ikke resizing af billedet..

-----Unit1----------
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ExtCtrls;

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;

end;

procedure TForm1.Shape1DragDrop(Sender, Source: TObject; X, Y: Integer);
begin
  TImage(Source).Top:=Shape1.Top+y;
  TImage(Source).Left:=Shape1.Left+x;
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
Avatar billede anold Nybegynder
20. december 1999 - 08:25 #2
Hej snorga

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??
Avatar billede snorga Nybegynder
20. december 1999 - 09:51 #3
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.
Avatar billede anold Nybegynder
20. december 1999 - 14:17 #4
Hej snorga
Ja det hjalp og sætte KeyPreview til True

Hvorfor kan man ikke "drage" hen over en image med en ny image

Hvordan får jeg vist det jeg "drager" når jeg trækker et rundt i min shape
Avatar billede snorga Nybegynder
20. december 1999 - 22:08 #5
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.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester