Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
ScrollBox Bug
#1
Merhaba,

FireMonkey FormCreate içinde runtime olarak ScrollBox veya FramedScrollBox içine kontroller create ediyorum. Bu kontroller sorunsuz olarak çalışıyor ve görünüyor.
Fakat ScrollBox içindeki scroll ile aşağı yukarı kaydırma hareketleri yapınca anlamsız bir şekilde hata oluyor. Böyle bir durumla karşılaşan oldu mu?

---------------------------
Debugger Exception Notification
---------------------------
Project LiftNetCom.exe raised exception class $C0000005 with message 'access violation at 0x0054d59a: read of address 0x00000008'.
---------------------------
Break   Continue   Help   
---------------------------

Hata anında Debug olarak durdurduğumda ise şurada kalıyor.
procedure TTextSettings.Assign(Source: TPersistent);
var
  LTextSettings: TTextSettings;
begin
  if (Source = nil) or (Source is TTextSettings) then
  begin
    if Source = nil then
      LTextSettings := TTextSettingsClass(ClassType).Create(Owner)
    else
      LTextSettings := TTextSettings(Source);
    try
      BeginUpdate;
      try
        DoAssign(LTextSettings);//burada kalıyor
      finally
        EndUpdate;
      end;
    finally
      if Source = nil then
        LTextSettings.Free;
    end;
  end
  else
    inherited;
end;

procedure TTextSettings.DoAssign(const Source: TTextSettings);
begin
 Font.Assign(Source.Font);//burada kalıyor
 FontColor := Source.FontColor;
 FontColorForState.Assign(Source.FontColorForState);
 HorzAlign := Source.HorzAlign;
 VertAlign := Source.VertAlign;
 WordWrap := Source.WordWrap;
 Trimming := Source.Trimming;
end;

  procedure CreateLabel();
 begin
   lbl := TLabel.Create(sbxPar);
   lbl.Parent := sbxPar;
   lbl.Position.Y := 12 + ((j - 1) * 23);
   lbl.Name := 'lblPar' + IntToStr(j);
   lbl.TextSettings.Font.Style := [TFontStyle.fsBold];
   lbl.FontColor := TAlphaColorRec.White;
   lbl.Text := sl.Strings[i];
   lbl.TextSettings.HorzAlign := TTextAlign.Trailing;
   lbl.TextSettings.WordWrap := False;
   lbl.AutoSize := True;
   lbl.Visible := True;
   lbl.Position.X := 200 - lbl.Width - 4;
 end;

 procedure CreateSpinEdit();
 begin
   edtSpn := TSpinBox.Create(sbxPar);
   edtSpn.Parent := sbxPar;
   edtSpn.Position.Y := 8 + ((j - 1) * 23);
   edtSpn.Position.X := 200;
   edtSpn.Width := 150;
   edtSpn.Name := 'edtPar' + IntToStr(j);
   edtSpn.Max := 64;
   edtSpn.Min := 2;
   edtSpn.Value := edtSpn.Min;
   edtSpn.Text := '';
 end;

 procedure CreateEdit();
 begin
   edt := TEdit.Create(sbxPar);
   edt.Parent := sbxPar;
   edt.Position.Y := 8 + ((j - 1) * 23);
   edt.Position.X := 200;
   edt.Width := 150;
   edt.Name := 'edtPar' + IntToStr(j);
   edt.Text := '0';
 end;

 procedure CreateComboBox();
 var
   nx: Integer;
 begin
   cbb := TComboBox.Create(sbxPar);
   with cbb do
   begin
     cbb.Parent := sbxPar;
     cbb.Position.Y := 8 + ((j - 1) * 23);
     cbb.Position.X := 200;
     cbb.Width := 150;
     cbb.Name := 'cbbPar' + IntToStr(j);

     for nx := nStartSel + 1 to nEndSel - 1 do
       cbb.Items.Add(sl.Strings[nx]);

     cbb.ItemIndex := 0;
     cbb.CanFocus := False;
   end;
 end;

No olarak style özelliği kullanmadım. Normal saf bileşen hali. Style kullanınca daha farklı saçmalıklar aldım.
Bu gidişle VCL ye geri döneceğim. Kendimce çok aşırı saçmalıkla karşılaştım. Bir çoğunu düzelttim fakat hala bir şeyler çıkıyor.
PostgreSQL - Linux - Delphi, Poliüretan
WWW
Cevapla
#2
Aldığın hata ile alakalı mı bilmiyorum ama normalde Font.Style'da yapılan değişikliğin aktif olabilmesi için StyledSettings içindeki Style özelliği False yapılmalı. Ben bunu kodla şu şekilde yapıyorum:
lbl.StyledSettings := lbl.StyledSettings - [TStyledSetting.Style];
There's no place like 127.0.0.1
WWW
Cevapla
#3
(17-12-2019, Saat: 13:30)SimaWB Adlı Kullanıcıdan Alıntı: Aldığın hata ile alakalı mı bilmiyorum ama normalde Font.Style'da yapılan değişikliğin aktif olabilmesi için StyledSettings içindeki Style özelliği False yapılmalı. Ben bunu kodla şu şekilde yapıyorum:
lbl.StyledSettings := lbl.StyledSettings - [TStyledSetting.Style];

Bende runtime font ve style değişikliklerini

label1.BeginUpdate;
****
label1.EndUpdate;

Bloğunun arasına alıyorum.
// Bilgi paylaştıkça çoğalır.. 

Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Layout'un Ekrana sığdırılması, Imagelist, Win32 debug sorunu, Scrollbox Yasemin 6 2.161 08-04-2021, Saat: 15:04
Son Yorum: Mr.X
  scrollbox kullanımı arsl01 10 7.916 12-07-2018, Saat: 11:34
Son Yorum: TescilsizUzman
  Scrollbox ve Anchors nehirnnn 2 3.087 17-11-2017, Saat: 11:56
Son Yorum: nehirnnn



Konuyu Okuyanlar: 1 Ziyaretçi