![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Привет всем, помогите пожалуйста с заданием, нужен хотя бы листинг, а то ничего понять не могу что надо сделать
![]() ![]() |
#2
|
||||
|
||||
![]() Скорее всего, надо очистить новый элемент меню и копировать все свойства старого (шрифт, текст, цвет, ...) в новый. Это к вопросу о "ичего понять не могу что надо сделать".
Например, вот код ASSIGN для картинок (TBitMap): Код:
procedure TBitmap.Assign(Source: TPersistent); var DIB: TDIBSection; {$IF DEFINED(CLR)} NewHandle: HBITMAP; NewPalette: HPALETTE; {$IFEND} begin if (Source = nil) or (Source is TBitmap) then begin FreeContext; {$IF DEFINED(CLR)} System.Threading.Monitor.Enter(BitmapImageLock); {$ELSE} EnterCriticalSection(BitmapImageLock); {$IFEND} try if Source <> nil then begin TBitmap(Source).FImage.Reference; FImage.Release; FImage := TBitmap(Source).FImage; FTransparent := TBitmap(Source).FTransparent; FTransparentColor := TBitmap(Source).FTransparentColor; FTransparentMode := TBitmap(Source).FTransparentMode; PixelFormat := TBitmap(Source).PixelFormat; FAlphaFormat := TBitmap(Source).AlphaFormat; end else {$IF DEFINED(CLR)} NewImage(0, 0, DIB); {$ELSE} begin FillChar(DIB, Sizeof(DIB), 0); NewImage(0, 0, DIB, False); end; {$IFEND} finally {$IF DEFINED(CLR)} System.Threading.Monitor.Exit(BitmapImageLock); {$ELSE} LeaveCriticalSection(BitmapImageLock); {$IFEND} end; PaletteModified := Palette <> 0; Changed(Self); end else begin {$IF DEFINED(CLR)} if Source is System.Drawing.Bitmap then begin FreeContext; InternalLoadFromBitmap(System.Drawing.Bitmap(Source), NewHandle, NewPalette, DIB); NewImage(NewHandle, NewPalette, DIB, System.Drawing.Bitmap(Source).RawFormat); PaletteModified := Palette <> 0; Changed(Self); end else {$IFEND} inherited Assign(Source); end; end; jmp $ ; Happy End! The Cake Is A Lie. Последний раз редактировалось Bargest, 14.01.2011 в 19:37. |
#3
|
|||
|
|||
![]() мне сказали что надо создать наследник TMenuItem (дочерний) и в нем перекрыть метод Assign() как это сделать ?
![]() |
#4
|
||||
|
||||
![]() Код:
type TMyMenuItem = class (TMenuItem) private protected public Procedure Assign(Sorce: TPresident); override; end; ... jmp $ ; Happy End! The Cake Is A Lie. Последний раз редактировалось Bargest, 14.01.2011 в 19:42. |
#5
|
|||
|
|||
![]() а как реализовать для TMenuItem?
|