Using Substring function in CString() class C++

If we want to use the typical C# string functionality in C++ or C we use basic CString() class. It implements many methods such as GetBuffer(); GetLength(); Append() CloneData(), Concatenate(),Find() , Format() , GetString() ,Insert() ,MakeUpper() , MakeLower(), Span() , Trim() , TrimRight() , TrimLeft()…

It has the Substring() C# method inCString. Mid(int,int) function. the Mid() function gets the begin index and length of the substring we want to use from the original string. It has the same functionality as SubString() in C#.

some example:

CString deger;

deger=”osman mumcu”;

CString yenideger=deger.Mid(6,5);

/////yenideger ->is  ”mumcu”

 

 

UCHAR * to CString OR Reverse Converting

// CString to-> unsigned char *(UCHAR*)
CString cTmp(“abcdef”);
unsigned char * Test = (unsigned char*)cTmp.GetBuffer(cTmp.GetLength());

// unsigned char * to=> CSTring
CString str(Test);

Türkçe karakterleri İngilizce karakter karşılığı (C# ISO Encoding)

Türkçe karakter olarak gelen string datayı yada bir ismi International standartları kullanan bir uygulamada Ingilizce karakterine çevrilmesi gerektiğinde ne yapmalı. Iso encoding burda işimize yarıyor."Cyrillic" encoding Tipini çekip, str;ng değeri UTF8 Encoding ile byte'a çevirip ilgili byteları UTF8 den iso("Cyrillic") tipindeki encodinge çevirip ilgili byte dizisini tekrar

string donusmus_deger =iso.GetString(isoBytes);


class Adam
{
private string name;

public string Name
{
get {
Encoding iso = Encoding.GetEncoding("Cyrillic");
Encoding utf8 = Encoding.UTF8;
byte[] utfBytes = utf8.GetBytes(name);
byte[] isoBytes = Encoding.Convert(utf8, iso, utfBytes);
string msg = iso.GetString(isoBytes);
name=msg;
return name;
}
set { name = value; }
}
}

 

Örnek girilen değer  :

“ÖZGÜR İSTİKBAL”

çıkan değer

“OZGUR ISTIKBAL”;

 

Excel 2007 den Veri Çekme (OleDb) C#

public static System.Data.DataTable excelDataTable=new System.Data.DataTable();
private static void GetExcelData()
{            string excelFileName = "aras.xlsx";
String sConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=aras.xlsx;Extended Properties=\"Excel 12.0 Xml;HDR=YES\";";
OleDbConnection objConn = new OleDbConnection(sConnectionString);

objConn.Open();
OleDbCommand objCmdSelect = new OleDbCommand("SELECT * FROM [ARASCARD$]", objConn);

objCmdSelect.CommandTimeout = 5000;
OleDbDataAdapter objAdapter1 = new OleDbDataAdapter();
objAdapter1.SelectCommand = objCmdSelect;
excelDataTable = new DataTable();
objAdapter1.Fill(excelDataTable);
objConn.Close();
}

DevExpress XAF – View Variant Module (Çeşitli View Modülü)

Merhaba,

DevExpress

Bugün bir başka DevExpress modülüyle karşınızdayım. Fazla uzatmadan kısaca View Variant Modülünden bahsedelim. View Variant Modülü, Express FrameWork Uygulaması yazdığımızda  Varolan View’larımızın dışında Aynı View için farklı çeşitte Viewları runtime’da göstermeye yarayan bir modül.

Örneğin bir NEsnenizin ListView özelliği var ve bunu Runtime’da(program çalışırken ) bir DropDownList ile farklı kolonlarını göstermek istedğinizi varsayalım.(tüm kolonları göster , Özet olan kolonları göster gibi) 2 farklı View ‘ı runtime’da göstermemiz için işimizi kolaylaştıran bir modül.

View ‘ın nesneleri ApplicationMODEL’indeki  ApplicationViewsView |Variants düğümünde özelleştirilir. Bu düğüme eklediğimiz Variant Değişkenleri DropDownlistteki her bir Objeyi tanımlar (aşağıdaki örnekte “All Columns” ve “Few Columns” örneği gibi.. Eğer ilgil View Düğümünde 2 veya daha fazla View çeşidi belirten Variant varsa DropDownlist Action’ı gözükür..

In a Windows Forms application:

In an ASP.NET application:

View Çeşitleri(Variantı) eklemek için , aşağıdakileri uygulayın:

  • AplicationMODEL ‘e gerekli nesne için ilgili View’ı yaratın.Bunu yapmak için ,    ApplicationViews düğümüne yeni bir ListView veya DetailView ekleyin, ve  ClassName ve  ID property’lerini belirleyin. Düğüme sağ tıklayıp ,  Generate content ‘i seçip ListView’ı propertylerle doldurmuş olup gerekli ayarları yapın . (Kolon ayarı, layout,vs.). Ne kadar View göstermek istiyorsak o kadar View oluşturmamız gerekiyor..
  • Gerekli nesnemiz için göstereceğimiz farklı türdeki DetailView veya ListView’ları oluşturalım. Bu nesne tipinin farklı türdeki Viewlarından ayırt edebilmemiz için anlamlı ID’ler vermemiz gerekiyor. (örneğin “_Cesitli” önekini ekleyin).Bu View düğümü view çeşitlerini içerecek. Sağ Tıklayıp  Add…Variant diyelim. Variants çocuk düğümü eklenmiş olacak.
  • Invoke the context menu for the Variants node and select the Add ListView menu item. Specify the newly added Yeni eklenen düümün IModelVariant.Caption ve IModelView.Id propertilerini değiştirin..DevExpress.ExpressApp.ViewVariantsModule.IModelVariant.ID propertisini hangi çeşit VIEW’ı göstereceksek onun ID’sini DROPDOWNLISTTEN Seçelim. Ek olarak,  IModelNode.Index propertisini özellieştirerek dropdowndaki sıralamayı özelleştirebilrsiniz.Bu adımı her yeni oluşturulmuş VIEW için tekrar edelim..
  • Variant Düğümünün üzerine gelerek  IModelVariants.Current propertisi sayesinde hangi View’ın VARSAYILAN olarak açılacağını belirtebiliriz.

Aşağıdaki örnek gösteriliyor.

Yukarıdaki adımdan sonra, aşağıdaki resimde View OLAYI’nın Windows Forms Application’da aktif oluğunu gözlemleyebiliyoruz.

 

 

 

 

 

 

Time Traveller and his Proof- Zaman yolculuğu yapan adam ve ispatı

Zaman yolculuğunun var olmadığını yada gerçekleşmeyeceğini düşünsek de bu adama bi kulak versek iyi olucak gibi. Çünkü adam zaman yolculuğunu yaşamış, gelecekteki kendisiyle görüşmüş.. Ve bununla ilgili ispatı da var…

Aşağıdaki video youtube’dan alıntıdır.

İyi seyirler.

Devexpress XAF – Uygulamayı kapamadan Logon Logoff

Projenize yeni bir ViewController(Vc_LogOffController) ekleyip , ve bu ViewController’a bir SimpleAction (saCikisYap ) ekleyin. aşağıdaki gibi değiştirin

 

//yapıcı

public Vc_LogOffController()

{

InitializeComponent();

RegisterActions(components);

//this.TargetObjectType=typeof(Window);

 

saCikisYap.Caption = “ÇIKIŞ YAP”;

saCikisYap.ImageName = “Logoff”;

 

}

protected override void OnActivated()

{

base.OnActivated();

saCikisYap.Active.SetItemValue(“IsLogOffEnabled“, SecuritySystem.IsLogoffEnabled);

}

 

private void saCikisYap_Execute(object sender, SimpleActionExecuteEventArgs e)

{

WinApplication winApplication = Application as WinApplication;

if (winApplication != null)

winApplication.LogOff();

}

 

İyi çalışmalar.

 

Devexpress XAF – DetailView LayoutGroup Expandable özelliği

Merhaba,

Devexpress’de XAF nesnelerinin DetailView görünümünde gruplama yaptığımızda Web application’larda bulunan özellikle de jquery ‘nin içeridiği Accordion’a benzer kontrolü Windows Application’da yapmak isteyenler için DetailView içindeki LayoutGroup ‘ların Expandable özelliğini true yapmamız gerekiyor.

İlgili sınıfımızın ViewController’in ViewControlsCreated olayını yaratıyoruz ..Sonra aşğıdaki fonksiyonları yazıyoruz.

 

public partial class Vc_BenimSinifimDetailView : ViewController

{

 

….
BenimSinifim _OrnekNesnem;
private void Vc_BenimSinifimDetailView_ViewControlsCreated(object sender, EventArgs e)
{
_OrnekNesnem=(BenimSinifim)this.View.CurrentObject;
ExpandGroupAyarla();
}
//ilgili DetailView’ın Layout Nesnelerine ulaşmak için ilgili Sınıfımızın LayoutControl’ünü yaratmamız gerekiyor.
private DevExpress.XtraLayout.LayoutControl _LayoutControl
{
get
{
if (this.View.IsControlCreated)
{
return (DevExpress.XtraLayout.LayoutControl)((DetailView)this.View).Control;
}
return null;
}
}
private void ExpandGroupAyarla()
{
int sayac = 0;
if (_LayoutControl != null)
{
foreach (object obj in _LayoutControl.Items)
{
if (obj is DevExpress.XtraLayout.LayoutControlGroup)
{
sayac++;
DevExpress.XtraLayout.LayoutControlGroup layoutControlGroup = (DevExpress.XtraLayout.LayoutControlGroup)obj;
if   (layoutControlGroup.Text==“Contact” ||
layoutControlGroup.Text==“Person” )
{
layoutControlGroup.ExpandButtonVisible = true;
layoutControlGroup.Expanded = false;
}
}
}
}
}
….
}
Sonuç aşağıdaki gibi olucaktır.
ve önceki hali :

DevExpress XAF- Nesnenin property’sini Regex ile mask yapma

Merhaba,

DevExpress XAF’de nesnelerle çalıştığımızdan bir çok şeyi kod tarafından nesnenin propert’leriyle yapmak durumundayızdr. Bu değişiklilklerden bir tanesi de regex ile düzeltmedir.

Regex ile bir property’i aşağıdaki gibi düzenliyoruz.

private string email;
[System.ComponentModel.DisplayName("E-Posta")]
[CustomAttribute("EditMaskType","Regex")]
[CustomAttribute("EditMask",@"[a-z][a-z|0-9|]*([_][a-z|0-9]+)*([.][a-z|0-9]+([_][a-z|0-9]+)*)?@[a-z][a-z|0-9|]*\.([a-z][a-z|0-9]*(\.[a-z][a-z|0-9]*)?)”)]
[CustomAttribute("DisplayFormat",@"[a-z][a-z|0-9|]*([_][a-z|0-9]+)*([.][a-z|0-9]+([_][a-z|0-9]+)*)?@[a-z][a-z|0-9|]*\.([a-z][a-z|0-9]*(\.[a-z][a-z|0-9]*)?)”)] //Formatı da regex ifadesyle aynı yapıyoruz
public string Email
{
get return email; }
set { SetPropertyValue(“Email“, ref email, value); }
}
//-> EditMaskType olarak yazdığımız özellik Maske olarak REGEX kullanacağımızı belirtiyoruz. Genel itibariyle STRING olan property’lerde regex kullanmakta fayda var yani regex’i belirtmekte fayda var çünkü integer kullanımında regex olmadan numeric bir maskeleme de yapılmakta…
//EditMask yazan yere Maskemizin kendisini yazıyoruz tabi bazı regex ifadelerinde ? gibi yada ^ işareti bulunmakta başta veya sonda.Bunları silmek gerekiyor.
//DisplayFormat -> genelde Maske’nin kendisiyle aynı değeri taşıyor.

Devexpress XAF- Change ModelDesigned PropertyEditor Attributes from Code-Model taraflı PropertyEditor Özelliklerini Kod tarafından değiştirme

Devexpress kullananlar bilirler. Özellikle XAF de business class’lar yarattığımızda gerekli attribute değişikliklerini çoğunlukla Model.cs dosyasından yapmak durumunda kalırız.Ancak Model.cs dosyasını açamadığımız yada Model.cs nin kendini güncellemediğini gördüğümüz olur.

Ya da projemizi başka bi projeyle birleştirmek istiyoruz ancak Model’de yaptığımız tüm değişiklikleri teker teker bulup eklemek gerekecek. Bu da zahmetli bir iş.

Bunun için yapılması gereken oluşturulan BusinessClass içindeki property’lerin atribute’larını propertyleri yazarken vermek olucaktır.

Aşağıdaki bir sınıfımız olduğunu varsayalım.

[DefaultClassOptions]
[System.ComponentModel.DisplayNameAttribute("Bölge")]
public class KYS_Bolge
{
public KYS_Bolge(Session session) : base(session) { }
private string baslik;
[System.ComponentModel.DisplayName("Başlık")]
public string Baslik
{
get { return baslik; }
set { SetPropertyValue(“Baslik“, ref baslik, value); }
}
}
Aşağıda gördüğünüz  resim CLASS’ımızın Model’deki DetailView ‘ından alınmış bir resim. ve ilgili propertyleri görebiliyorsunuz

adsf

Sizin de gördüğünüz gibi bazı propertyleri benim belirtmiş olduğum gibi Sınıf tarafından kod ile yazabiliyoruz.
örneğin kendi image dosyanıza işaret etmek istiyorsanız yeni bir png dosyası ekleyip(32×32 olmalı), adını (sadece adını , uzantısını yazmadan)
[ImageName(" resim_adi")]
şeklinde [DefaultClassOptions]   ‘ın hemen altına yazdığımızda Business CLass’ıımızdaki Resim özelliğini kod ile değiştirmiş oluyoruz. aynı şekilde Caption’ımızı ayarlamak istiyorsak yani Business Class’ımızın ismini yazmak istiyorsak ve bunu kodla yapacaksak
[DefaultClassOptions] ’ın hemen altına veya Class’ımızı oluşturduğumuz class Bolge dediğimiz yerin hemen üstüne
[System.ComponentModel.DisplayName("Bölge")]
yazmamız yeterli. Bu sayede class’ımızı kullanıdğımız veya çağırdığımız her yerde bu şekilde görünecektir.

property özellikleri

Yukarıda gördüğümüz propertilerimizin Özelliklerini gösteren bir şema. Bu şema’da

Caption , Format belirleme(regex için) ,ilgili property’mizin davranışı(düzenlenebilir olup olmaması),ImmediatePostData olup olmayışı gibi bi çok özelliğini değiştirebiliyoruz. Peki bunu kod tarafından nasıl yapıyoruz. Aşağıdaki gibi

(.cs) tarafında Property mizin üzerine geliyor ve hemen üstüne yada private ile public arasına aşağıdaki kodu yazıyoruz

[CustomAttribute] veya [Custom] da olabiliyor. Biz CustomAttribute’u kullanalım. CustomAttribute,property’nin string olarak herhangi bir özelliğini yine ilgili özelliğin değerini string olarak vererek değiştirmemizi sağlıyor.

[CustomAttribute("AllowEdit","False")] -> bunu property’mizin üstüne yazdığımızda yukarıdaki resimde gördüğümüz ilk okun gösterdiği özelliği set etmiş oluyoruz. Bu da “Düzenlenemez” olarak set edilmiş oluyor. bu ve bunun gibi diğer özellikleri de set edebiliriz.

örnek:

private string baslik;
[System.ComponentModel.DisplayName("Başlık")]
[CustomAttribute("AllowEdit","False")]
[CustomAttribute("IsPassword","True")] //Password textbox oluşmasını sağlar.* işareti gösterir.
public string Baslik
{
get return baslik; }
set { SetPropertyValue(“Baslik“, ref baslik, value); }
}
Regexi değiştirmekte veya set etmek de aynı yoldan geçiyor. O da başka bir yazımın konusu olsun istiyorum.
(:)
İyi çalışmalar herkese.
Follow

Get every new post delivered to your Inbox.