खींचते समय TTreeView चयन गड़बड़ मैं TTreeView
पर ड्रैग-एंड-ड्रॉप कार्यक्षमता को कार्यान्वित कर रहा हूं। इसके बारे में एक OnStartDrag
घटना पर, मैं अपने व्युत्पन्न वर्ग की DragOcject
बना रहा हूं:एक नोड
TTreeDragControlObject = class(TDragObject)
private
FDragImages: TDragImageList;
FText: String;
protected
function GetDragImages: TDragImageList; override;
end;
procedure TfrmMain.tvTreeStartDrag(Sender: TObject;
var DragObject: TDragObject);
begin
DragObject := TTreeDragControlObject.Create;
TTreeDragControlObject(DragObject).FText := tvTree.Selected.Text;
end;
और ये मेरे ओवरराइड मेरी DragObcject
की GetDragImages
समारोह है:
function TTreeDragControlObject.GetDragImages: TDragImageList;
var
Bmp: TBitmap;
begin
if FDragImages = nil then
begin
FDragImages := TDragImageList.Create(nil);
Bmp := TBitmap.Create;
try
Bmp.Width := Bmp.Canvas.TextWidth(FText) + 25;
Bmp.Height := Bmp.Canvas.TextHeight(FText);
Bmp.Canvas.TextOut(25, 0, FText);
FDragImages.Width := Bmp.Width;
FDragImages.Height := Bmp.Height;
FDragImages.SetDragImage(FDragImages.Add(Bmp, nil), 0, 0);
finally
Bmp.Free;
end;
end;
Result := FDragImages;
end;
सब कुछ ठीक छोड़कर यह एक ही कार्य करता है गड़बड़ पेंटिंग पेड़ नोड पर खींचते समय:
मैं इस व्यवहार से कैसे बच सकता हूं?
ठीक है, मैं स्टंप हो गया हूं। यह TListBox के साथ नहीं होता है, TTreeView पेंट कोड में एक बग प्रतीत होता है। मैं सुझाव दे सकता हूं कि एक तृतीय पक्ष TreeView नियंत्रण की तलाश है। – Blorgbeard
गड़बड़ क्या है? आप किस व्यवहार से बचने की कोशिश कर रहे हैं? –
@TOndrej कृपया मेरी पोस्ट की आखिरी छवि पर एक नज़र डालें। बनाया गया बिटमैप के पीछे चयन कर्सर चाल के बाद रहता है। – JustMe