Pascal SCADA ile dans…

Scada denilince aklınıza uzaktan kontrol ve veri toplama gelecektir. Bir çok profesyonel scada çözümü yanında kendiniz geliştirebileceğiniz bir ortam olsa ve bu açık kaynak kodlu olsa diyorsanız PascalSCADA paketi sizin için uygun olacaktır.

Aslında bir component package olarak tasarlanmış ve gördüğüm kadarı ile ufak projelerde kullanılabilir. Tabi asla bir Scada paketi olarak görmemek gerekli zira çizim yeteneği tamamen delphi ya da lazarus form tasarımına bağımlı.

Bu paketi lazarusa eklemek için

https://sourceforge.net/projects/pascalscada/files/

adresinden bulabilir veya doğrudan

http://sourceforge.net/projects/pascalscada/files/0.7.2/pascalscada_0.7.2.tar.bz2/download

linki ile indirebilirsiniz.

Paketi “\lazarus\components” kılasörüne kopyaladıktan sonra “pascalscada.lpk” dosyasını paket olarak açıp derlemeniz ve yüklemeniz gerekli.

Bu aşamalardan sonra component bar üzerinde ilgili nesneleri görebilirsiniz. Paketin internet adresinde örnek projeler de bulunuyor dediğim gibi çok profesyonel uygulamalar hariç kullanılabilir.

Yeni bir yazıda görüşmek dileği ile…

Karaşimşek Işığı yapalım mı – Knight Rider Leds

Karaşimşek dizisini hatırlar mısınız? Karaşimşek çok akıllı bir araba olur ve sahibinin dedikleri ile kendisine musallat olan cemil cümle elemanlara karşı bir çok önlem alabilmektedir. Karaşimşeğin en çok akılda kalan özelliği sürekli sağa sola giden öndeki ışıklandırmasıdır.

Tabiki burada IC4017 serisini ve 555,556 lı bir devre tasarlamayacağız çünkü şimdilik elektronik projeleri burada yayınlamıyorum.

 

Bu yazımızda lazarus ile bir komponent nasıl oluşturulur ve ek özellikler nasıl eklenir bunu inceleyeceğiz.Yukarıda anlattığımız gibi bir projemiz olsun ve led simulasyonu yapalım…

Ledler günümüzde bir çok yerde kullanılıyor ledlere enerji verdiğinizde üzerindeki metalden tek yöne bir akım geçişi sağlanır (diyot) ve ışıma sağlanır enerjiyi kestiğinizde ise ledin ışığı hemen gitmez.

Tasarlayacağımız ledin grafik özelliklerinden faydalanabileceğimiz bir nesneden türetirsek işimiz daha kolay olacak gibi.

Bunun için TShape komponentini kendimize temel alalım…

Package menüsünden New package ile kendi komponentimizi oluşturalım:

Oluşturacağımız komponentin adı LedShape olsun ve LedShape.pas olarak \lazarus\components\ledshape klasörü içerisine saklayalım.


unit LedShape;

{$mode objfpc}{$H+}

interface

uses
 Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, ExtCtrls;

type

 { TLedShape }

 TLedShape = class(TShape)
 private
 ReadBlue: TColor;
 ReadColor: TColor;
 ReadGreen: TColor;
 ReadRed: TColor;
 ReadColorStep: TColor;

 tmrAnim : TTimer;
 procedure OnTmrAnim(Sender: TObject); // for led animation
 tmrState : Integer; // state machine global var.
 ledColorCnt : Tcolor;

 r,g,b,
 t_r,t_g,t_b : byte;

 ReadFromColor: TColor;
 ReadStatus: boolean;
 ReadStep: Integer;
 ReadToColor: TColor;
 procedure SetBlue(const AValue: TColor);
 procedure SetColor(const AValue: TColor);
 procedure SetColorStep(const AValue: TColor);
 procedure SetFromColor(const AValue: TColor);
 procedure SetGreen(const AValue: TColor);
 procedure SetRed(const AValue: TColor);
 procedure SetStatus(const AValue: boolean);
 procedure SetStep(const AValue: Integer);
 procedure SetToColor(const AValue: TColor);
 { Private declarations }
 protected
 procedure Paint; Override; //mu added
 constructor Create(AOwner : TComponent); Override;
 destructor Destroy; Override;
 public
 { Public declarations }
 published
 { Published declarations }
 property StartAnimation: boolean read ReadStatus write SetStatus; // some functions aren't neccessary
 property LedFromColor : TColor read ReadFromColor write SetFromColor;
 property LedToColor : TColor read ReadToColor write SetToColor;
 property LedColorStep : TColor read ReadColorStep write SetColorStep;
 property LedRed : TColor read ReadRed write SetRed;
 property LedGreen : TColor read ReadGreen write SetGreen;
 property LedBlue : TColor read ReadBlue write SetBlue;
 property AnimationStep : Integer read ReadStep write SetStep default 100;
 property LedColor : TColor read ReadColor write SetColor;

 property Align;
 property Brush;
 property Name;
 property Pen;
 property Shape;
 property Visible;
 property Height;
 property Width;


 end;

procedure Register;

implementation

procedure Register;
begin
 RegisterComponents('Sample',[TLedShape]);
end;


{ TLedShape }

procedure TLedShape.SetStatus(const AValue: boolean); //it is added automaticly CTRL + SHIFT + C
begin
 //if ReadStatus=AValue then exit;
 ReadStatus:=AValue;
 tmrAnim.Enabled := ReadStatus;
 if ReadStatus then
 begin
 ledColorCnt := LedFromColor;
 tmrState := 1;
 end;
end;

procedure TLedShape.SetStep(const AValue: Integer);
begin
 if ReadStep=AValue then exit;
 ReadStep:=AValue;
 tmrAnim.Interval:= ReadStep;
end;

procedure TLedShape.SetFromColor(const AValue: TColor); //it is added automaticly
begin
 if ReadFromColor=AValue then exit;
 ReadFromColor:=AValue;
 Self.Brush.Color:= ReadFromColor;
end;

procedure TLedShape.SetBlue(const AValue: TColor);
begin
 if ReadBlue=AValue then exit;
 ReadBlue:=AValue;
end;

procedure TLedShape.SetGreen(const AValue: TColor);
begin
 if ReadGreen=AValue then exit;
 ReadGreen:=AValue;
end;

procedure TLedShape.SetRed(const AValue: TColor);
begin
 if ReadRed=AValue then exit;
 ReadRed:=AValue;
end;

procedure TLedShape.SetColor(const AValue: TColor);
begin
 if ReadColor=AValue then exit;
 ReadColor:=AValue;
end;


procedure TLedShape.SetColorStep(const AValue: TColor);
begin
 if ReadColorStep=AValue then exit;
 ReadColorStep:=AValue;
end;

procedure TLedShape.SetToColor(const AValue: TColor); //it is added automaticly
begin
 if ReadToColor=AValue then exit;
 ReadToColor:=AValue;
end;

procedure TLedShape.Paint;
begin
 inherited Paint;
end;

//tmranim ontmr
procedure TLedShape.OnTmrAnim(Sender: TObject);
begin
 //

 case tmrState of
 0: begin
 end; // do nothing...
 1: begin
 ledColorCnt := ReadFromColor;
 Self.Brush.Color := ledColorCnt;
 RedGreenBlue(ReadToColor,t_r,t_g,t_b);
 RedGreenBlue(ledColorCnt,r,g,b);
 tmrState := 2; // go next state
 SetRed(r);
 SetGreen(g);
 SetBlue(b);

 end;
 2: begin

 if r<t_r then
 inc(r)
 else
 if r>t_r then
 dec(r);

 if g<t_g then
 inc(g)
 else
 if g>t_g then
 dec(g);

 if b<t_b then
 inc(b)
 else
 if b>t_b then
 dec(b);

 SetRed(r);
 SetGreen(g);
 SetBlue(b);

 ledColorCnt:= RGBToColor(r,g,b);

 Self.Brush.Color:= ledColorCnt; // refresh
 if ledColorCnt=ReadToColor then
 tmrState := 3; // go next state;

 SetColor(ledColorCnt);
 //Invalidate;
 end; // 2:

 3: begin
 tmrState:=0; // do nothing
 StartAnimation := false;
 //Invalidate;
 end; // 3:
 end; // case tmrstate


end;


constructor TLedShape.Create(AOwner: TComponent);
begin
 ReadStep := 1;
 // we should create timer object for animation
 tmrAnim := TTimer.Create(self);
 tmrAnim.OnTimer := @OnTmrAnim; // animations will in this event by state machine , you must remember @ (address)
 tmrAnim.Enabled := ReadStatus;
 tmrAnim.Interval := ReadStep;

 inherited Create(AOwner);
end;

destructor TLedShape.Destroy;
begin
 // we should destroy our objects...
 tmrAnim.Free;

 inherited Destroy;
end;

end.

Oluşturduğumuz komponentlerle bir form tasarlayalım:

Ve biraz da kodlama ancak çok fazla optimizasyonla uğraşmadığımı hemen söyliyeyim…


unit main;

{$mode objfpc}{$H+}

interface

uses
 Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
 ExtCtrls, StdCtrls, LedShape;

type

 { TForm1 }

 TForm1 = class(TForm)
 CheckBox1: TCheckBox;
 LedShape1: TLedShape;
 LedShape10: TLedShape;
 LedShape11: TLedShape;
 LedShape12: TLedShape;
 LedShape13: TLedShape;
 LedShape14: TLedShape;
 LedShape15: TLedShape;
 LedShape16: TLedShape;
 LedShape17: TLedShape;
 LedShape18: TLedShape;
 LedShape19: TLedShape;
 LedShape2: TLedShape;
 LedShape20: TLedShape;
 LedShape3: TLedShape;
 LedShape4: TLedShape;
 LedShape5: TLedShape;
 LedShape6: TLedShape;
 LedShape7: TLedShape;
 LedShape8: TLedShape;
 LedShape9: TLedShape;
 Timer1: TTimer;
 Timer2: TTimer;
 procedure CheckBox1Change(Sender: TObject);
 procedure LedShape1MouseDown(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
 procedure Timer1Timer(Sender: TObject);
 procedure Timer2Timer(Sender: TObject);
 private
 { private declarations }
 public
 { public declarations }
 end;

var
 Form1: TForm1;
 led_cnt : integer=0;
 up_down : boolean=true; //up means left to right, down means right to left
 be_wait_up : tdatetime=0;
 be_wait_dn : tdatetime=0;
implementation

{ TForm1 }

procedure TForm1.Timer1Timer(Sender: TObject);
var
 obj : string;
begin
 if be_wait_up>now then exit;

 if not CheckBox1.Checked then
 Timer1.Enabled:=false;

 if up_down then
 if led_cnt<20 then
 inc(led_cnt);

 obj := 'LedShape'+inttostr(led_cnt);
 if TLedShape(FindComponent(obj))<>nil then
 TLedShape(FindComponent(obj)).StartAnimation := true;

 if led_cnt>=20 then
 begin
 up_down := false;
 be_wait_dn := now + (((1/24)/60)/60)*(2/1);
 be_wait_up := now +1;
 led_cnt := 21;
 exit;
 end;

end;

procedure TForm1.Timer2Timer(Sender: TObject);
var
 obj : string;
begin
 if be_wait_dn>now then exit;

 if not CheckBox1.Checked then
 Timer2.Enabled:=false;

 if not up_down then
 if led_cnt>1 then
 dec(led_cnt);

 obj := 'LedShape'+inttostr(led_cnt);
 if TLedShape(FindComponent(obj))<>nil then
 TLedShape(FindComponent(obj)).StartAnimation := true;

 if led_cnt<=1 then
 begin
 up_down := true;
 be_wait_up := now + (((1/24)/60)/60)*(2/1);
 be_wait_dn := now +1;
 led_cnt := 0;
 exit;
 end;

end;

procedure TForm1.CheckBox1Change(Sender: TObject);
var
 obj : string;
 n:integer;
begin
 for n:=1 to 20 do
 begin
 obj := 'LedShape'+inttostr(n);
 if TLedShape(FindComponent(obj))<>nil then
 TLedShape(FindComponent(obj)).Brush.Color := clGreen;
 end;
 if CheckBox1.Checked then
 begin
 Timer1.Enabled:=true;
 Timer2.Enabled:=true;
 led_cnt:=0;
 be_wait_up:=0;
 be_wait_dn:=now+1;
 up_down:= true;
 end;
end;

procedure TForm1.LedShape1MouseDown(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
var
 cmp : TLedShape;
begin
 cmp := sender as TLedShape;
 cmp.StartAnimation:= true;
end;




initialization
 {$I main.lrs}

end.

 

Şimdi de motor:

Proje ile ilgili kaynak kodları şu adresten de bulabilirsiniz:

http://sourceforge.net/projects/ezberim/files/lazarus_sample_components/

 

Yeni bir yazıda görüşmek üzere…

May the Force be with you – Güç seninle olsun

May the Force be with you… cümlesini hatırlıyor musunuz? Starwars serisindeki bir jedi ustası olan Obi Van Kenobi genç öğrencisine temennisini bu şekilde belirtiyor.

Bu temenni ile yola çıkmılmış olan Jedi VCL paketi delphi için gerçek anlamda görsel ve etkisel gücün sizin yanınızda olmasını sağlıyor.

Project jedi “http://www.delphi-jedi.org/” adresinde open source olarak delphi için kullanıma hazır bekliyor.

Peki JVCL ile neler yapabilirsiniz?  JVCL paketi içerisinde hem görsel hem de fonksiyonel bir çok bileşke (component) bulunuyor. Bunları sıralamayacağım zira gerçekten çok fazla…

Ama diyelim ki opera browser da bulunan title butonu , tranparan düğmeyi ya da sistemde log etmek için görsel olmayan bir bileşkeyi bulabiliyorsunuz.

Projenin son haline http://sourceforge.net/projects/jvcl/files/ adresinden ulaşabilirsiniz.

 

Script’lerin gücü adına…

Remobjects firmasının Pascal script component paketi ile delphi ve lazarus içerisinde harici kodların çalıştırılmasını sağlayabilirsiniz.

Bu örnekte lazarus içerisine kurulumunu yapıp örnek bir proje yapacağız.

Kurulum için sitenin ilgili adresindeki paketi kurmanız gerekli adresi ise şu: http://www.remobjects.com/trials.aspx#free sağ alt köşedeki link :)

Doğrudan bağlantı ise:

http://www.remobjects.com/download.aspx?file=RemObjects%20Pascal%20Script%20for%20Delphi%20-%203.0.55.957.exe.url.txt

Kurulum tamamlandıktan sonra “C:\Program Files\RemObjects Software\Pascal Script for Delphi\Source” linkinden lpk dosyasına erişebilirsiniz.

Benim tavsiyem lazarus klasörü içerisindeki component alt klasörüne bir adet pascalscript klasörü oluşturmanız ve bu kaynak dosyaları buraya atmanız.

Kurulum için lpk dosyasını lazarus ile açıp lazarusu derlemeniz gerekli.

Bir başka yapılması gereken husus ise derleyeci ayarlarından syntax kısmını delphi yapınız.

Derleme işleminden sonra component bölgesinde gözükecektir.İçerisinde bir kaç örnekler mevcut ama biz de kendimize ait bir örnek yapalım…

Yeni bir proje açalım bir memo nesnesi bir düğme ve bir label formumuzda olsun:

Bunları yapmamız yeterli ancak psscript’in dış nesnelerle bağlantısını sağlamak için bazı işlemler yapmak lazım.

Ancak önce yaptığımızı doğrulayalım ve şu kodları Execute düğmesi içine yazalım:


procedure TForm1.ExecuteClick(Sender: TObject);
begin
 PSScript1.Script := memScript.Lines;
 if PSScript1.Compile then
 begin
 if PSScript1.Execute then
 lblStatus.Caption := 'Executed...';
 end
 else
 begin
 lblStatus.Caption := 'Error...';
 end;
end;


Şimdi hazırız…

Şu kodu oluşturalım:


unit main;

{$mode objfpc}{$H+}

interface

uses
 Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
 StdCtrls, uPSComponent, uPSCompiler, uPSRuntime,

 uPSR_std,
 uPSC_std,
 uPSR_stdctrls,
 uPSC_stdctrls,
 uPSR_forms,
 uPSC_forms,
 uPSC_graphics,
 uPSC_controls,
 uPSC_classes,
 uPSR_graphics,
 uPSR_controls,
 uPSR_classes;

type

 { TForm1 }

 TForm1 = class(TForm)
 Execute: TButton;
 Label1: TLabel;
 lblStatus: TLabel;
 memScript: TMemo;
 PSScript1: TPSScript;
 procedure ExecuteClick(Sender: TObject);
 procedure PSScript1Compile(Sender: TPSScript);
 procedure PSScript1CompImport(Sender: TObject; x: TPSPascalCompiler);
 procedure PSScript1ExecImport(Sender: TObject; se: TPSExec;
 x: TPSRuntimeClassImporter);
 procedure PSScript1Execute(Sender: TPSScript);
 private
 { private declarations }
 public
 { public declarations }
 end;

var
 Form1: TForm1;

implementation

{ TForm1 }

procedure TForm1.ExecuteClick(Sender: TObject);
begin
 PSScript1.Script := memScript.Lines;
 if PSScript1.Compile then
 begin
 if PSScript1.Execute then
 lblStatus.Caption := 'Executed...';
 end
 else
 begin
 lblStatus.Caption := 'Error...';
 end;
end;

procedure TForm1.PSScript1Compile(Sender: TPSScript);
begin
 Sender.AddRegisteredVariable('Application', 'TApplication');
 Sender.AddRegisteredVariable('Self', 'TForm');
end;

procedure TForm1.PSScript1CompImport(Sender: TObject; x: TPSPascalCompiler);
begin
 SIRegister_Std(x);
 SIRegister_Classes(x, true);
 SIRegister_Graphics(x, true);
 SIRegister_Controls(x);
 SIRegister_stdctrls(x);
 SIRegister_Forms(x);
end;

procedure TForm1.PSScript1ExecImport(Sender: TObject; se: TPSExec;
 x: TPSRuntimeClassImporter);
begin
 RIRegister_Std(x);
 RIRegister_Classes(x, True);
 RIRegister_Graphics(x, True);
 RIRegister_Controls(x);
 RIRegister_stdctrls(x);
 RIRegister_Forms(x);
end;

procedure TForm1.PSScript1Execute(Sender: TPSScript);
begin
 PSScript1.SetVarToInstance('APPLICATION', Application);
 PSScript1.SetVarToInstance('SELF', Self);
end;

initialization
 {$I main.lrs}

end.

Runtime geçip şunu deneyelim:

 

Label nesnesine ulaşmak istiyorsanız onu da kayıt etmeniz gerekli hadi bunu da siz yapın…

Sonraki yazıda görüşmek üzere…

Kelime EzberIM 1.4d – basic english turkish words and sentences

Kelime EzberIM’e yeni veri tabanı kazandırmak için en temel ingilizce kelimelerin ve cümlelerin bir arada olduğu sayfa avına çıktım.

İnternette yayınlanan bir veri tabanını kendi sistemime adapte ettim.

Darısı diğer paketlere…

Örnek göster seçeneği tıklandığında tray icon alanında otomatik olarak önce kelime , örnek kullanımı ve Türkçe karşılığını görebilirsiniz.

Yeni bir yazıda buluşmak dileği ile…

Proje takip – Todo List

Bu yazıda www.abstractspoon.com adresinden bulduğum ücretsiz bir proje takip yazılımından bahsedeceğim.

Eğer çok projeyi bir arada yürütüyor ve adımlarını bir arada görmek istiyorsanız bu yazılım sizin için güzel çözüm olacaktır.

Todolist.exe dosyasını ve yardım pluginlerini aşağıdaki adresten indirebilirsiniz:

http://abstractspoon.pbwiki.com/f/todolist_exe.zip

 

İndirilen zip dosyayı aynı ad ile bir klasöre çıkarmanız ve içerisindeki ToDoList.exe dosyasını çalıştırmanız yeterlidir.

Taşınabilir olması USB üzerinde de projelerinizin tutulmasına olanak sağlıyor.

 

ToDoList.exe çalıştırıldığında daha önce bir dosya açılmadıysa boş bir ekran ile gelecektir.

Bu ekranda bütün projelerinizi takip edebilir, güncelleyebilir zaman tutabilir veya dış ortama aktarabilirsiniz örn freemind yazılımına.

Her projeyi tek bir adımın dışında sınıflandırabilir ve alt parçalarını oluşturup toplamdaki % miktarına göre bitirilip bitirilmediğini görebilirsiniz.

Projelerin düzenlenmesi tamamlandıktan sonra kapattığınızda otomatik olarak saat bölgesinde çalışmaya devam edecektir.

Örnek bir çalışma ekranı:

Yeni bir yazıda buluşmak dileği ile…

 

Kelime EzberIM 1.4c Multi Language

Nihayet dil çevrim işi google abinin translate (!) yardımı ile bitti.

Yani çevirilen dillerin doğru yanlışı olabilir :)

Bir deneme sürüşü isterseniz :

 

Sıra uygun kelime databaselerini oluşturmada…

Yükleme adresi:

 

http://sourceforge.net/projects/ezberim/files/ezberim/ezberim-setup.exe/download

Kelime EzberIM çok dil…

EzberIM yazılımı ile ilgili bir kaç ekleme daha geliyor;

  1. EzberIM çok dilli olacak ilk başta Türkçe İngilizce :)
  2. Daha önceden çapraz bulmaca ile ilgili bir kaç deneme yapmıştım muhtemelen ezberim içinden çalıştırılabilir olacak.
  3. Excel’e dosyaların gönderimi ve alımı , böylece kelime dosyalarının düzenlemsindeki çoğu problem de ortadan kalkacaktır.
  4. Kullanıcı klavuzu ile ilgili çalışmaya ise şunları bitirince hemen başlayacağım.

Görüşmek dileği ile…

Kelime EzberIM 1.4b yazı denetle

Uzun süredir kelime ezberim yazılımı ile ilgili çok fazla bir ekleme yapmamıştım artık bir kaç ekleme yapıp tekrar canlandırma zamanı geldi sanırım.

İlk değişiklik şu oldu kelimeleri düğmeler ile seçiyoruz ancak yazmaya gelince kelimelerin yazılışını doğru yapıyor muyuz bilmiyoruz.

Bu versiyonda yazı denetim özelliği geldi.

Bu özellik hem kelimeler için hem de cümle dosyasında da çalışıyor.

Bir kaç özellik daha ekleyeceğim gözüküyor tamamlandığında buradan paylaşıyor olacağım.

Yükleme linkinden son şeklini indirebilirsiniz.

 http://sourceforge.net/projects/ezberim/files/ezberim/ezberim-setup.exe/download

İyi gün dileklerimle

Bir başka geliştirme aracı Dev c++

Dev C++ programını ilk incelediğimde c dilinin yeniden yorumlanması olarak düşünmüştüm. Ancak zaman içerisinde Dev C++ yazılımına üçüncü parti bazı eklemeler yapılmış ve içerisinde rahatlıkla form tasarlayabilir hale gelmiş.

Dev C++ dili özünde delphi 6 ile yapılmış bir açık kaynak kodlu derleyici. Kurulumu ve kullanımı rahat diyebilirim ancak pascal ağırlıklı çalışıyorsanız adapte olmanız zaman alabilir.

İlk olarak http://www.bloodshed.net/devcpp.html adresinden orjinal sürümü kullandım ancak bir windows uygulaması yapma adımına gelince bildiğiniz api seviyesinde kodlamanın artık gereksiz olduğuna bir kez daha inandım.

Elbette low level’da kodlama da yapabiliyoruz ancak “zorlaştırmayın kolaylaştırın” düsturu ile  alternatiflerini ararken aynı derleyici ile bir paket oluşturulmuş; adı wxDev c++.

wxDev ile kendinize ait formlar oluşturabilir ve içerisinde c++ dili ile yazılım geliştirebilirsiniz. Tabi c dilinin zahmetlerine katlanmanız gerekecek. ;)

Önce indirelim  http://sourceforge.net/projects/wxdsgn/files/wxDev-C%2B%2B/Version%207/wxdevcpp_7.4_full_setup.exe/download adresinden bulabilirsiniz, 46 mb civarında.

Kurulum tamamlandığında ilk çalıştırma esnasında kullanım stili vs. sorularına ok demeniz yeterli olacaktır.

Daha sonra File / New / project  sırasını takip edip aşağıdaki ekrana ulaşabilirsiniz:

Burada wxWidgets Dialog projesini seçiyorsunuz ve sizden nereye saklayacağınız ile formun özelliklerini belirleyeceğiniz ekran geliyor:

Bu ekranla işimiz bittip Create düğmesi ile artık formumuza ulaşabiliriz:

Ekranın sol tarafında proje gezgini , nesneler (component) ve nesne özelliklerini (property) görebilirsiniz.

Şimdi ekrana bir miktar komponent ekleyelim:

Eklediğimiz butonu çift tıklayım ve kodlama alanına ulaşalım:

/*
* WxButton1Click
*/
void Project1Dlg::WxButton1Click(wxCommandEvent& event)
{
// insert your code here
wxString mesaj=”";
wxDateTime tim;

tim = wxDateTime::Now();

mesaj = tim.FormatISOTime();
WxMemo1->AppendText(mesaj);

}

 

İlk projenin amacı aldığı saat bilgisini memo nesnesine eklemek olsun…

Projeyi ctrl+f11 ile rebuild edelim ve crtl + f9 ile çalıştıralım, karşımıza:

 

Çalışma ekranımız gelecektir.

Son olarak diyebilirim ki alternatif ücretsiz derleyecide c dilini kullanmak istiyorum diyorsanız dev c++ ve wxdsgn paketi sizin için faydalı olacaktır.

Bir sonraki yazıda orta ölçek bir proje yapalım…

 

Follow

Get every new post delivered to your Inbox.